CQ2400K Double-Sided((** NONE **:&) Image file created by unregistered CopyQMO:™! 666 6 ~666 6 ~g!}(0C Wrong revision of ROM. This version of CP/M requires ROM Rev. 1.3 \XINIT &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!~Ypsp2mÆÆf ͧÆFILE EXISTS _: É: :ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~22\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: ! Â$$$ SUB ""C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!!>2CP/M error: Drive A $invalid.$file read only.$ile 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~+é72 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͌x2͢*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~=262*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 "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2^RH@@zÀè05:?aI<11*!666 6~6666~!:>222!"!"*"~ w 6:O>:"( O(O( :"˿2">!>>r+s##^6#Vs#{:" ˿~(˷2"~r#^#V#: />6>`>2*J6*N ^#V~O6#:(()1>=(2*H 66*L>2y2>2:2>2O::G{_!rOO6!r{_O6!r~((#H>ɯy0 8 G>06>:OG(yI(yo 2 >2:> =7o0͝!!!91>8}C u!y0~ j#ͣ!+W_z#{ ( V(˖y2&i))))L  ^#V ~2 ##>V(>2!tly2y2C+͝!!6 6 ͝!! q y ~w~w~w~w~(35~ (~ ~ 4~ 046 6 6~-#~^S(( (+++sxw F (#~ݾ ~ݾ ~ݾ(, N Z~w~w~w V = n &)^V^V ^  ~ >  **͝!! N q66i`#z n& ~ 6!͝6!͝6!͝~__RK"& ^ ^@' ^p ^i^(^ (0(0(0(0(0 =1O+K| !}"]}$^}$_}!}x+~111<*F=U 0w1G~# \1 d10P1x0G0&06 "F= ʐ1 ʐ16 Ö10}1ͱ k1å1ͱ k10ß1 ;1ù1:0 ʞ: ù1:: 1 1:"%@ʞ: ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_2~F2=G+~F23*2+<=C2+;2~>.33?*@O DEU Ă2=ʦ3%2,ʰ3 ʰ3 ʰ3;ʰ3!) 3w+ Ô2"{3q3(:> 63:<.33PX 2|2>:f3)0R3>) Your lower drive is being re-assigned as drive A. Exchange diskettes and press [RETURN]=5( !"#$%&'(, Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. 1.6 Copyright '76,'77,'78,'79,'80 Digital Research, Inc. Copyright 1982,1983 Morrow Designs, Inc. * Double Sided System *% 1!226 !à@$@B B HH II$@DI ABI$"$H$H@$$I! H*  $H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$E$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"DASM COM@AUTO COMBACKUP COM 0CBIOS MACW CBOOT MAC CPMENU PILDDT COM&DUMP ASM!DUMP COM ED COM4!"#$FORMAT COM%&IBM COM'INIT 001(INIT 002 )4INIT 003b*+,-./012345678INIT COMN9:;<=INIT PIL >LOAD COM?MDWORK PIL@ABCDEFGHMICRO PILfIJKLMNOMORROW COMPMOVCPM COMfQRSTUVWOSB COMXPAUSE COMY#PILOT COMqZ[\]^_`abcdefghiPIP COM:jklmRETURN COMnSETBAUD COMoSTAT COM)pqrSUBMIT COM sSYSGEN COM tTERMINALDATuvTUTORIALPIL:wxyzXER COM{XSTATEX PIL|XSUB COM}!)ͼ !ͼ :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:! 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*!{͚|͚}͚͚{!$~#͚͚> ͪ> ͪ11*" COPYRIGHT(C) 1978, DIGITAL RESEARCH f  ! á 4êü /L9ASMPRNHEX_!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ 8@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! ~*!) " :  '<ͭ'<>V$>O$:Ğà\ÞØ`rÍÖ1![w#w#b!"!F#v2[G*##~w*##~<*}q!~ڬ6![^![^#fk"͎͘!G#*####*^#Vû!^*"*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~ ͅͰ>2lyPLnR>UX:l̅2l͓*>E2C!" """ :ʼ:*1 |R|ͦ0FIL: R  R* } *" :¿::¿üX!C^#fk[@ :Œ:=ʌG!ʆF#H vÛc*| EH ͺ,^1 ͦ *""1 EH DH ͺ,1 ͦ :  1:  " > 2 !F> # #>* #~A2( (> #(#NWyxHWo:_:O͈̓ ~t'!$ *PIP COM:/012STAT COM)345SYSGEN COM 6FORMAT COM78BACKUP COM9:SUBMIT COM ;XSUB COM< AUTO $$$l{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/?'  v:P@< !  PP27 ( *"  NZZ NCC POPEP M x_BH!œ#¶ ¦{KÈCÈ<:JCR:  !6 s!#  ɯ<:O=_Z!F!V#fjQ̓E!^#Vo&)~#FxGyѯ<àn8X!~ڢͅ6~44O! s#r!~ ڿ6ͅ^4!mw!wp!~ͅ!55N! N#fio&)^#fk:|: |Ë  |*" ͩ !6="1 :  1}1:n:>BʋSSͦSSxS 1:  1"" ͦ 1 |R >O U!" 1 1!|_!^#fk $8AP`ixH ñññ81Ľ y0îH ñGîG  ñH ñ(Ľ yîH ñîîĽ y0îîH ñG 1: :,; c*| } 8OĽ 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 >NP) program Rev. 1.7 $Copyright 1982 Morrow Designs, Inc. KSan Leandro, CA. Insert the (SOURCE) diskette in Drive (A:) Insert the (DESTINATION) diskette in Drive (B:) Insert the (SOURCE) diskette in the disk drive. Press ([RETURN]) when ready to copy. Type any other character to quit: (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track:  Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the system disk in drive A:, press ([RETURN]) Press (R) to copy a new disk or, to quit, insert the system disk in drive A: and press ([RETURN]) Insert the (SOURCE) diskette, press ([RETURN]) Insert the (DESTINATION) diskette, press ([RETURN]) ( EU Ă2=ʦ3%2,ʰ3 ʰ3!6*.B^#V!"! N#F!~#foB"! w# S!~!: *6!~!.~Vm 7w>22 <2& : ! ͝:& !' ͝ !'  # !y~7ePY*!~CSS " !""" [ z*͑8bk" (* k* ͻ[ * ͊" !": ͻ! " : 7N!c! +| !":& ͻ! " 2 : <!Nc!: O>2 +| !"6 S ! 6 6 *  # +| :A24!~77" N#FC #^#VS [ DMK ! " K [ * #͑8`i!* q#p#s#r *͊|_>g}o"[$ * ͗[ * #͗"ͻN#FC  ~#fo2O:]?(!q!~VmR: K[!*6!~òK x*~* 88880<" 8H=(0O0y(ͻ* c͸@8_͵͸Oͻw!~~Oͻ#}o|g|}MD!xxGyOܭ)ïòõøûþ()Micro-Decision (BACKUC3PX 2|;Ý+ '}3"}3<ʛ3>ʦ3%2,ʰ3 ʰ3In Leandro, CA. Insert the (SOURCE) diskette in Drive (A:) Insert the (DESTINATION) diskette in Drive (B:) Insert the (SOURCE) diskette in the disk drive. Press ([RETURN]) when ready to copy. Type any other character to quit: (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track:  Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the system disk in drive A:, press ([RETURN]) Press (R) to copy a new disk or, to quit, insert the system disk in drive A: and press ([RETURN]) Insert the (SOURCE) diskette, press ([RETURN]) Insert the (DESTINATION) diskette, press ([RETURN]) ( EU Ă2=ʦ3%2,ʰ3 ʰ3; MICRO-DECISION ; CP/M 2.2 ; BIOS REV 1.6 ; COPYRIGHT 1982,1983 ; MORROW DESIGNS, INC. ; SAN LEANDRO, CA. ; ; 04/20/83 ; ;* ; DOUBLE SIDED ;* ; .Z80 ; MEMSIZE EQU 64 ; REV EQU 16H ; CPM EQU (MEMSIZE-9)*1024 BDOS EQU CPM+806H BIOS EQU CPM+1600H ; .PHASE BIOS ; ; ROM EQU 0 ; HMRM EQU ROM+6 WRHSRM EQU ROM+0CH RDHSRM EQU ROM+9 DISRM EQU ROM+0FH BTERM EQU ROM+18H ROMDATX EQU ROM+1BH MSGRM EQU ROM+3 ; ; CONTROL BITS WITHIN DFLAG BYTE HSTACT EQU 0 ;Host buffer active flag. ;Buffer contains nothing if = 0. ;Buffer contains a sector if = 1. ; HSTWRT EQU 1 ;Host buffer dirty flag. ;Buffer has not been written to if = 0. ;Buffer has been written to if = 1. ; RSFLAG EQU 2 ;Read sector flag. ;Sector need not be read if = 0. ;Sector must be read if = 1. ; READOP EQU 3 ;Read if = 1. Write if = 0. ; IMS EQU 6 ;In MemorT (ROMCTL),A ;TURN ON ROM LD HL,(ROMDATX) LDIR ; LD IY,RAMDATY ; LD (IX+HSTSEC),2 LD (IX+SECCNT),8 LD (IX+SECSIZ+1),81H LD (IX+HSTBUF+1),HIGH CPM ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; LD (IX+HSTSEC),1 LD (IX+HSTTRK),1 LD (IX+SECCNT),3 LD (IX+HSTBUF+1),HIGH CPM + 16 ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; LD HL,CPM+3 ; GOCPM: LD BC,80H CALL SETDMA ; LD A,0C3H LD (0),A LD (5),A ; XOR A LD (3),A ; PUSH HL LD HL,WBOT LD (1),HL ; LD HL,BDOS LD (6),HL ; LD HL,(VNUMB) LD (8),HL ; LD A,(IY+DFLAG) AND 80H ;MASK IMSBUF FLAG SET IMS,A ;ACTIVATE IMS LD (IY+DFLAG),A ; LD (IY+UNACNT),0 ; LD A,(4) LD C,A ; POP HL JP (HL) ; BTERR: OUT (ROMCTL),A JP BTERM ; ; CONST: IN A,(S1STAT) ;CONSOLE STATUS ROUTINE AND 2 ;SEE IF RDY RET Z ;RETURN WITH 0 IF NOT RDY LD A,0FFH ;RETURN WITH FF IF RDY RET ; CONIN: LD A,(RAMDATY+DFLAG) ;GET DFLAG AND 0C0H ;MASK OUT IMS FLAGS CP 0C0H ;CHECK IF IIND FREE SPACE ; INC DE ;UPDATE FREE SPACE POINTER LD (HL),D DEC HL LD (HL),E ; ADD HL,DE ;SET HL ==> IMS BUFFER INC HL INC HL ; LD E,(HL) ;UPDATE IMS BUFFER HEADER LD (HL),0FDH INC HL LD D,(HL) DEC DE LD (HL),E INC HL ; LD A,E ;SEE IF LAST CHAR. OR D LD A,(RAMDATY+DFLAG) JR NZ,SKP1 ;JMP IF NOT LAST CHAR. ; RES IMSBUF,A ;CLEAR IMSBUF FLAG ; SKP1: BIT PARITY,(HL) ;CHECK PARITY BIT OF CHAR. JR Z,SKP2 ;JMP IF PARITY = 0 ; RES IMS,A ;DE-ACTIVATE IMS ; SKP2: LD (RAMDATY+DFLAG),A ;SAVE DFLAG ; LD A,(HL) ;GET CHAR. LD (HL),D ;FINISH UPDATING IMS BLOCK HEADER JR CHRET ;RETURN TO CP/M ; ; FIND searches BIOS ram area starting from HL for the block ; header contained in A. ; FIND: CP (HL) ;SEE IF HEADER CODE MATCHES INC HL ;INCREMENT POINTER ; LD E,(HL) ;GET OFFSET TO NEXT BLOCK INC HL LD D,(HL) ; RET Z ;RETURN IF BLOCK FOUND ; INC HL ;SET POINTER TO NEXT BLOCK ADD HL,DE JR FIND ;KEEP LOOKING ; ; ; On entry to XLATE, register C y Submit flag. ;I.M.S. in-active if = 0. ;I.M.S. active if = 1. ; IMSBUF EQU 7 ;In Memory Submit buffer empty flag. ;I.M.S. buffer is empty if = 0. ;I.M.S. buffer is not empty if = 1. ; ; ROMCTL EQU 0F6H ; DPHOFF EQU 10 ; BDFM EQU 5 NRDY EQU 6 SIZMSK EQU 18H DSM EQU 2 ; ; WRALL EQU 0 WRDIR EQU 1 WRUAL EQU 2 ; ; S1STAT EQU 0FDH S1DATA EQU 0FCH ; S2DATA EQU 0FEH S2STAT EQU 0FFH ; CR EQU 0DH LF EQU 0AH ASC0 EQU 30H ; START: JP BOOT WBOT: JP WBOOT JP CONST JP CONIN CNOUT: JP CONOUT JP LST JP PUN JP PTR JP HOME JP SELDSK JP SETTRK JP SETSEC JP SETDMA JP READ JP WRITE JP LISTST JP SECTRAN ; JP CVMSG ;CHANGE VIRTUAL DRIVE MESG. ; JP RDBLK ;DIRECT DISK READ JP WRBLK ;DIRECT DISK WR JP DISCIO ;DIRECT DISK I/O ; DB REV DW RAMDATX DW RAMDATY DW MTAB DW XLTAB ; ETBLPTR:DW ESCTBL CTBLPTR:DW CTRLTBL EVCTPTR:DW ESCVECT CVCTPTR:DW CTVECT DW DCASTRT ; ; WBOOT: LD SP,STACK LD DE,DSKBUF PUSH DE POP IX LD BC,DATXLN OUMS ACTIVE JR Z,SUBMT ;JMP IF SUBMIT ACTIVE ; CNIN: IN A,(S1STAT) ;CONSOLE INPUT ROUTINE BIT 1,A ;SEE IF RDY JR Z,CNIN ;JMP IF NOT RDY ; IN A,(S1DATA) ;GET CHARACTER CHRET: AND 7FH ;MASK OFF PARITY RET ; ; SUBMT locates the submit string block within the BIOS ram area, ; the next character is taken from the buffer and passed to CP/M. ; The free block and submit string block pointers are updated. ; If this was the last character in the buffer, then the IMSBUF ; bit in dflag is cleared. ; If the parity bit is set on the character, then the IMS bit in ; dflag is cleared, which de-activates IMS until the next warm ; boot. ; ; PARITY EQU 7 ; SUBMT: IN A,(S1STAT) ;SEE IF CHAR. READY BIT 1,A JR Z,SUBGO ;JMP IF NO INPUT ; IN A,(S1DATA) ;GET CHAR. CP 3 ;SEE IF CNTL-C JR NZ,SUBGO ;JMP IF NOT ; LD A,(RAMDATY+DFLAG) ;DE-ACTIVATE IMS RES IMSBUF,A LD (RAMDATY+DFLAG),A ; LD A,18H RET ; SUBGO: LD HL,XLTAB ;POINTER TO RAM AREA LD A,0FFH ;FREE SPACE CODE CALL FIND ;Fcontains the character to be output. ; A test is made to see if the system is in the process of outputing ; a multiple character escape sequence, or if the character is a ; Morrow Standars Control Code. If neither test is true, than the ; character is output. ; If the character is part of a multiple character escape sequence, ; then the character is passed to the ESCAPE routine. If the ; character is a MSCC, then it is converted to the appropriate ; sequence, and output. ; esc equ 1bh ; conout: ld a,(esc_lvl) ; test escape flag or a ; check if flag is set jr nz,ESCAPE ; if escape sequence, jump ld a,1fh ; test if MSCC cp c jp c,cout ; if not, then xmit it ld a,esc ; check if esc char cp c ; jp nz,notesc ; if not, jump ld a,1 ; otherwise, set escape ld (esc_lvl),a ; level to 1st stage ret ; and return notesc: ld hl,(ctblptr) ; set to search control table call lookup ; and lookup character in table or a ; see if char found jp z,cout ; if not, output char ld ence is being output. When the next character is ; received, it is tested to see if it is an equals sign (=). ; If it is not, than an escape character is output, followed ; by the character received. If the character is the equal sign, ; then two more characters will be accepted, after-which a string ; will be output for positioning the cursor. ; escape: ld a,(esc_lvl) ; get current escape level cp 1 ; level 1? jr z,seq1 ; then process 1st part cp 2 ; level 2? jr z,seq2 ; then process 2nd level jr seq3 ; it must be level 3 ; seq1: ld a,'=' ; equal sign? cp c ; if char is =, then DCA started jr z,set ; else, could be character to xlate xor a ; clear escape level ld (esc_lvl),a ld hl,(etblptr) ; point to xlate table call lookup ; lookup character or a ; see if char found jr nz,down ; if found, jump to output push bc ld c,esc ; else, send escape, then char call cout ; send escape pop bc ; get original character jp cout ; send it ; down: ld hl,(evc call cout ; output char ; ld hl,dcamid ; pointer to seperator string call loop ; output string ; ld a,e ; use order to adjust de add a,b inc b add a,b ld e,a ; de points to 2nd char to output ; ld a,(de) ; get char to output ld c,a pop af call nz,ascout ; call ascii if flag set call cout ; output char ; outend: ld hl,dcaend ; point to dca terminator jp loop ; ; ; subroutine: lookup ; ; This routine is entered with the HL register pair pointing to ; the base of a table to be searched. Register C contains the ; character to search for. Upon return, The accumulator will ; contain 0 if the character was not found, and ffh if it was found. ; If the character was found in the table, then bc will contain ; the offset into the table, multiplied by 2. i.e BC / 2 = location ; of character in table. The maximum number of values in the table is ; 20 h. ; lookup: ld b,0 ; init offset nmtch: ld a,(hl) ; get value from table cp 0ffh ; see if end of table jr z,nochl,(cvctptr) ; calculate string location ; ; subroutine: outstr ; ; This routine outputs a string of characters to the console. ; It is used by the translate program to output a terminal ; specific string in order to implement a control sequence. ; When entered, the HL register pair points to the base of ; the string table, and the BC register pair is the offset ; to the string. Characters are output starting with the ; first character until a byte value of ffH is detected. ; outstr: add hl,bc ; add offset to base ld e,(hl) ; get location of string inc hl ld d,(hl) ex de,hl ; move address of string to hl loop: ld a,(hl) ; get a char cp 0ffh ; see if done ( ffh==>done) ret z ld c,a ; if not, get char call cout ; xmit it inc hl jr loop ; until end of string ; ; This routine is used to create a string for direct ; cursor addressing, or to translate character codes. ; Upon receipt of an Escape code from ; a program, the esc_lvl is set to indicate an escape ; sequtptr) ; calculate string location jr outstr ; output the string set: ld a,2 ; otherwise, set for level 2 ld (esc_lvl),a ; processing ret ; and return ; seq2: ld a,c ld (first),a ; this is the first char ld a,3 ; set for level 3 ld (esc_lvl),a ret ; seq3: ld a,(offset2) ; get offset for 2nd char add a,c ; add to 2nd char ld (second),a ; save 2nd char ; ld a,0 ld (esc_lvl),a ; clear escape sequence ; ld de,first ; pointer to 1st char ; ld a,(de) ; get 1st char ld c,a ; save in c ld a,(offset1) ; get offset for 1st char add a,c ; add to 1st char ld (de),a ; save 1st char ; ld a,(order) push af rra sbc a,a ; 0==>1-2 : FF==>2-1 ld b,a ; save order in b ; ld a,e ; use order to adjust de sub b ld e,a ; de points to 1st char to output ; ld hl,dcastrt ; pointer to dca prefix sting call loop ; output string ; ld a,(de) ; get 1st char to output ld c,a pop af bit 1,a ; see if ascii push af call nz,ascout ; call ascii if nz har ; jmp if end ; cp c ; see if char matches jr z,mtch ; jmp if match ; inc hl ; inc table pointer inc b ; inc offset inc b ; " " jr nmtch ; continue search ; mtch: ld c,b ; put offset in bc ld b,0 ld a,0ffh ; set a to success ret ; nochar: xor a ; set a to failure ret ; ; ; ASCOUT takes a binary value in C and output its decimal ascii ; equivalent. ; ascout: push bc ld a,c ld c,'0' ;init to ascii 0 ; tens: sub 10 ;subtract 10 from value jr c,ones ;jmp if underflow inc c ;inc ascii tens value jr tens ;loop ; ones: ld b,a ;save intermediate value ld a,'0' ;a = ascii 0 cp c ;see if tens value is 0 call nz,cout ;output tens value if not 0 ; ld a,3ah ;ascii 0 plus 10 add a,b ;add to produce ones value pop bc ld c,a ;get ready for output ret ; ; COUT: IN A,(S1STAT) ;CONSOLE OUTPUT ROUTINE BIT 0,A ;SEE IF RDY JR Z,COUT ;JMP IF NOT RDY ; LD A,C ;OUTPUT CHARACTER OUT (S1DATA),A RET ; ;XON/XOFF PROTOCOL HANDLER FOR MICRO DEC CHAR. RET ; PUN EQU LST ; HOME: CALL MSTK ;FIX STACK ; PUSH IX ;SAVE IX & IY PUSH IY ; LD IX,RAMDATX ;INIT IX & IY LD IY,RAMDATY ; OUT (ROMCTL),A ;TURN ON ROM ; CALL HMRM ;CALL ROM ; CRETN: IN A,(ROMCTL) ;TURN OFF ROM POP IY ;RESTORE IX & IY POP IX ; POP HL LD SP,HL ;FIX STACK ; RET ; MSTK: POP DE ;SAVE RET. ADDR. ; LD HL,0 ;GET CURRENT STACK ADD HL,SP ;IN HL. ; LD SP,STACK ;MOVE STACK PUSH HL ;SAVE OLD STACK ; PUSH DE ;RESTORE RET. ADDR. RET ; SELDSK: LD A,4 ;CHECK DRIVE BOUND CP C JR C,BDRV ;JMP IF BAD ; BIT 0,E ;SEE IF FIRST TIME JR NZ,SKPSET ;JP IF NOT FIRST ; LD HL,RAMDATY ;POINTER TO RAMDATY LD A,C CALL GDSK1 ;GET MTAB POINTER ; BIT 7,(HL) ;SEE IF FOREIGN DRIVE JR NZ,SKPSET ;JP IF FOREIGN ; INC HL PUSH HL ;SAVE DSKDEF POINTER PUSH BC CALL GETAB ;READ CONFIG TABLE FROM DISKETTE POP BC OR A ;SEE IF ERROR JP NZ,0 ;WARM BOOT IF ERROR ; DSKTB EQU DSKBUF+80H+25 ;CHECK FOR VALID TABLE LD HL,DSKTB ;POINTERBC,DPBASE ADD HL,BC ;HL=DPB POINTER ; PUSH HL ;SAVE DPB POINTER PUSH DE ;SAVE NEW DPB POINTER LD DE,DPHOFF ;OFFSET TO DPH POINTER ADD HL,DE ;GET POINTER TO DPH LD E,(HL) INC HL LD D,(HL) POP HL PUSH DE ; JR NZ,NOTAB ; LD BC,15 LDIR ;UPDATE DPB ; NOTAB: POP HL LD A,(HL) ;GET SECTORS PER TRACK LD (SECTRK+RAMDATY),A ;SAVE IN RAMDATY ; INC HL ;INC POINTER INC HL ; LD A,8 ;GET RECORDS PER ALLOC. BLOCK BIT 2,(HL) JR Z,K1 ;JMP IF 1K BLOCKS ; LD A,16 ;2K VALUE ; K1: LD (UNAMAX+RAMDATY),A ;SAVE IN RAMDATY ; POP HL ;RESTORE DPB POINTER RET ; SKPSET: OR 0FFH ;CLEAR Z FLAG JR SKPST1 ; BDRV: LD HL,4 ;RETURN ERROR CODE AND LD (HL),H ;SET TO DRIVE A. LD L,H RET ; ; SETTRK: LD A,C ;SET TRACK IN RAMDATY LD (SEKTRK+RAMDATY),A RET ; ; SETSEC: LD A,C ;SET SECTOR IN RAMDATY LD (SEKSEC+RAMDATY),A RET ; ; SETDMA: LD (DMAADR+RAMDATY),BC ;SET DMA ADDRESS IN RAMDATY RET ; ; READ: CALL MSTK ;FIX THE STACK ; PUSH IX ;SAVE IX & IY ISION CBIOS ; LST: CALL LISTST ; STATUS OF LSTFLG JR Z,LST ; IF NOT READY, LOOP OVER: LD A,C ; ELSE, GET CHAR OUT (S2DATA),A ; XMIT IT RET ; ; LISTST: CALL RDRSTAT ; GET A CHARACTER, OR NULL CP 13H ; IF XOFF R'CVD... JR NZ,NXTCHK ; IF NOT, CHECK IF XON XOR A ; SET FLAG TO NOT RDY LD (LSTFLG),A RET ; RETURN NOT RDY NXTCHK: CP 11H ; IF XON, THEN IT MIGHT BE READY JR NZ,CHKFLG ; ELSE, STATE NOT CHANGING LD A,0FFH LD (LSTFLG),A ; SET FLAG TO RDY CHKFLG: LD A,(LSTFLG) ; GET STATUS FLAG LSTRET: OR A ; SET FLAGS RET Z ; IF ZERO, THEN XOFF PENDING IN A,(S2STAT) ; GET STATUS AND 81H ; CHECK IF XMIT READY CP 81H LD A,0 ; SET NOT READY STATUS JR NZ,LSTRET ; JMP IF NOT READY DEC A ; SET READY STATUS RET ; AND RETURN IT. ; ; RDRSTAT: IN A,(S2STAT) ; GET STATUS AND 2 RET Z ; RETURN IF NO CHAR IN A,(S2DATA) ; ELSE, GET CHAR AND 7FH ; MASK PARITY SCF ; SET FLAG RET ; PTR: CALL RDRSTAT ;GET STATUS OR CHAR. JR NC,PTR ;LOOP IF NO TO END OF TABLE+1 LD B,25 ;COUNT MUST BE ODD! LD E,0 ;INIT 0-CHECK BYTE ; ; ACC IS 0 ALREADY CHKLP: DEC HL ;DEC POINTER XOR (HL) ;X-OR TABLE VALUE INTO PARITY CHECK BYTE LD D,A ;SAVE PARITY CHECK BYTE OR E ;OR IN 0-CHECK BYTE LD E,A ;SAVE 0-CHECK BYTE LD A,D ;RESTORE PARIY CHECK BYTE DJNZ CHKLP ;DEC TABLE LENGTH & LOOP TIL DONE INC HL ;HL=>DSKDEF1 ; OR A ;A=0 IF TABLE OK LD A,E ;A = 0-CHECK BYTE LD DE,SDPB ;POINTER TO S.S. DPB JR NZ,SSIDE ;ASSUME S.S. IF INVALID TABLE ; OR A ;CHECK 0-CHECK BYTE JR Z,SSIDE ;INVALID TABLE IF ZERO ; DSKTDB EQU DSKBUF+80H+9 LD DE,DSKTDB ;POINTER TO DPB IN BOOT ; BIT DSM,(HL) ;SEE IF D.S. MEDIA JR Z,SSIDE ;JP IF S.S. ; POP HL ;GET DSKDEF POINTER SET DSM,(HL) ;SET FOR D.S. MEDIA JR DSIDE ; SSIDE: POP HL RES DSM,(HL) ;SET FOR S.S. MEDIA ; DSIDE: XOR A ;SET Z FLAG SKPST1: LD A,C ;SET DRIVE LD (SEKDSK+RAMDATY),A ; LD H,0 ;CALC. DPB POINTER LD L,C ; ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ; LD  PUSH IY ; LD IX,RAMDATX ;INIT IX & IY LD IY,RAMDATY ; LD (IY+UNACNT),0 ;CLEAR UNACNT ; SET READOP,(IY+DFLAG) ;SET FOR READ OP ; SET RSFLAG,(IY+DFLAG) ;FORCE READ ; ;TREAT AS UNALLOC LD (IY+WRTYPE),WRUAL ; JP RWOPER ; ; WRITE: CALL MSTK ;FIX THE STACK ; PUSH IX ;SAVE IX & IY PUSH IY ; LD IX,RAMDATX ;INIT IX & IY LD IY,RAMDATY ; RES READOP,(IY+DFLAG) ;SET TO WRITE ; LD (IY+WRTYPE),C ;SAVE WRITE TYPE ; LD A,C ;SEE IF UNALLOC CP WRUAL JR NZ,CHKUNA ;JMP IF NOT ; LD A,(IY+UNAMAX) ;A=INIT UNALLOC SEC COUNT LD (IY+UNACNT),A ;INIT. UNALLOC COUNT. ; LD A,(IY+SEKDSK) ;UNADSK=SEKDSK LD (IY+UNADSK),A ; LD A,(IY+SEKTRK) ;UNATRK=SEKTRK LD (IY+UNATRK),A ; LD A,(IY+SEKSEC) ;UNASEC=SEKSEC LD (IY+UNASEC),A ; CHKUNA: LD A,(IY+UNACNT) ;ANY UNALLOC LEFT? OR A JR Z,ALLOC ;JMP IF NOT ; ; MORE UNALLOC REMAINS. ; DEC (IY+UNACNT) ;DEC UNALLOC COUNT ; LD A,(IY+SEKDSK) ;SAME DISK ? CP (IY+UNADSK) ; JR NZ,ALLOC ;JMP IF NOT ; LD A,(IY+SEKTRK) B,7 ;1024 BYTE MASK ; S1024: SRA E ;CALC PHYSICAL SECTOR S512: SRA E S256: SRA E S128: INC E LD (IY+SEKHST),E ;SAVE PHYSICAL SECTOR ; ; LD A,B ;A=MASK AND D ;MASK SECTOR LD (IY+TRSEC),A ;SAVE MASKED SECTOR ; BIT HSTACT,(IY+DFLAG) ;HOST ACTIVE ? SET HSTACT,(IY+DFLAG) ;SET HOST ACTIVE JR Z,FILHST ;FILL IF NOT ACTIVE ; LD A,(IY+SEKDSK) ;SAME DISK ? CP (IX+HSTDSK) JR NZ,NOMTCH ;JMP IF NOT ; LD A,(IY+SEKTRK) ;SAME TRACK ? CP (IX+HSTTRK) JR NZ,NOMTCH ;JMP IF NOT ; LD A,(IY+SEKHST) ;SAME SECTOR ? CP (IX+HSTSEC) JR Z,MATCH ;JMP IF SAME ; NOMTCH: XOR A ;A=NO ERROR STATUS BIT HSTWRT,(IY+DFLAG) ;HOST WRITTEN ? CALL NZ,WRTHST ;WRITE HOST IF NEEDED OR A ;CHECK STATUS JR NZ,DIRET ;JMP IF ERROR ; FILHST: LD A,(IY+SEKDSK) ;SET HOST FOR XFER LD (IX+HSTDSK),A ; LD A,(IY+SEKTRK) LD (IX+HSTTRK),A ; LD A,(IY+SEKHST) LD (IX+HSTSEC),A ; XOR A ;A=NO ERROR STATUS BIT RSFLAG,(IY+DFLAG) ;NEED TO READ ? CALL NZ,RDHST ;READ OR A ;CHECK STATUS ; RET ; GETAB: CALL MSTK ;FIX STACK PUSH IX PUSH IY PUSH BC LD IX,RAMDATX LD IY,RAMDATY ; XOR A BIT HSTWRT,(IY+DFLAG) CALL NZ,WRTHST RES HSTWRT,(IY+DFLAG) RES HSTACT,(IY+DFLAG) POP BC OR A ;SEE IF ERROR JR NZ,DIRET ; LD (IX+HSTDSK),C ;SET RAMDATX TO READ BOOT SECTOR LD (IX+HSTTRK),0 LD (IX+HSTSEC),1 CALL RDHST ;READ BOOT SECTOR JR DIRET ; SECTRAN:LD L,C ;HL=BC LD H,B ; INC HL ;START SECTORS AT 1 ; LD A,D ;SEE IF XLAT TABLE OR E RET Z ;RETURN IF NO XLAT ; EX DE,HL ;HL=XLT ; ADD HL,BC ;ADD TO TABLE LD L,(HL) ;GET XLATED SECTOR LD H,0 ; RET ; ; WRTHST: OUT (ROMCTL),A ;TURN THE ROM ON ; CALL WRHSRM ;CALL THE ROM ; HSTRET: IN A,(ROMCTL) ;TURN OFF THE ROM ; LD A,(IX+ERFLAG) ;GET STATUS ; RET ; RDHST: OUT (ROMCTL),A ;TURN ON ROM ; CALL RDHSRM ;CALL ROM ; JR HSTRET ;RETURN ; ; RDBLK: LD (IX+ERFLAG),0 ;CLEAR ERROR FLAG ; LD IY,RAMDATY ;INIT IY ; CALL MSTK ;FIX THE STACK ; CALL RDHST ;CALL ROM ; DRET: POP HL ;SAME TRACK ? CP (IY+UNATRK) JR NZ,ALLOC ;JMP IF NOT ; LD A,(IY+SEKSEC) ;SAME SECTOR ? CP (IY+UNASEC) JR NZ,ALLOC ;JMP IF NOT ; ; SECTOR IS UNALLOC. ; INC (IY+UNASEC) ;INC NEXT UNALLOC SECTOR ; LD A,(IY+SECTRK) ;CHECK FOR END OF TRACK CP (IY+UNASEC) JR NC,NOOVF ;JMP IF NOT END OF TRACK ; INC (IY+UNATRK) ;INC TRACK LD (IY+UNASEC),1 ;SECTOR 1 ; NOOVF: RES RSFLAG,(IY+DFLAG) ;NO READ NEEDED. JR RWOPER ; ALLOC: LD (IY+UNACNT),0 ;CLEAR UNALLOC COUNT ; SET RSFLAG,(IY+DFLAG) ;READ NEEDED ; ; RWOPER: LD (IX+ERFLAG),0 ;CLEAR ERROR FLAG ; LD A,(IY+SEKDSK) ;GET DRIVE CALL GDSK ;GET POINTER TO DISKDEF INC HL ; LD A,(HL) ;A=DSKDEF1 ; LD E,(IY+SEKSEC) ;GET SECTOR DEC E ;DEC SECTOR LD D,E ;SAVE SECTOR ; AND SIZMSK ;MASK OUT SIZE BITS ; ; LD B,0 ;128 BYTE MASK CP 0 ;SEE IF 128 JR Z,S128 ;JMP IF 128 ; LD B,1 ;256 BYTE MASK CP 8 ;SEE IF 256 JR Z,S256 ;JMP IF 256 ; LD B,3 ;512 BYTE MASK CP 10H ;SEE IF 512 JR Z,S512 ;JMP IF 512 ; LD JR NZ,DIRET ;JMP IF ERROR ; RES HSTWRT,(IY+DFLAG) ;NO PENDING WRITE ; MATCH: LD L,(IY+TRSEC) ;GET MASKED SECTOR LD H,0 ; ADD HL,HL ;CALC 2**HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ; LD E,(IX+HSTBUF) ;DE=> HOST BUFFER LD D,(IX+HSTBUF+1) ; ADD HL,DE ;HL=> SECTOR IN BUFFER ; LD E,(IY+DMAADR) ;DE=DMA ADDR. LD D,(IY+DMAADR+1) ; LD BC,128 ;BC=SECTOR LENGTH ; BIT READOP,(IY+DFLAG) ;READ OR WRITE ? JR NZ,RWMOVE ;JMP IF READ ; SET HSTWRT,(IY+DFLAG) ;SET WRITE FLAG EX DE,HL ;REVERSE DIRECTION ; ; RWMOVE: LDIR ;MOVE SECTOR ; LD A,(IY+WRTYPE) ;CHECK IF DIR WRITE CP WRDIR LD A,0 ;A=NO ERROR STATUS IN CASE WE'RE DONE JR NZ,DIRET ;JMP IF NOT DIR WRITE ; RES HSTWRT,(IY+DFLAG) ;CLEAR WRITE FLAG ; CALL WRTHST ;WRITE BUFFER ; DIRET: POP IY ;RESTORE IX & IY POP IX ; POP HL ;RESTORE STACK LD SP,HL ; CP BDFM ;SEE IF UNREADABLE JP Z,BDRV ;JMP IF UNREADABLE ; CP NRDY ;SEE IF NOT READY JP Z,BDRV ;JMP IF NOT READY ;RESTORE THE STACK LD SP,HL ; RET ; WRBLK: LD (IX+ERFLAG),0 ;CLEAR ERROR FLAG ; LD IY,RAMDATY ;INIT IY ; CALL MSTK ;FIX STACK ; CALL WRTHST ;CALL ROM ; JR DRET ; DISCIO: LD (IX+ERFLAG),0 ;CLEAR ERROR FLAG ; LD IY,RAMDATY ; CALL MSTK ;FIX THE STACK ; OUT (ROMCTL),A ;TURN ON THE ROM ; CALL DISRM ;CALL THE ROM ; IN A,(ROMCTL) ;TURN OFF ROM ; LD A,(IX+ERFLAG) ; JR DRET ;RETURN ; ; GDSK: PUSH IY ;GET IY INTO HL POP HL ; GDSK1: LD DE,MTOFF ;CALC. MTAB POINTER ADD HL,DE ; LD E,A ;MULTIPLY DRIVE BY 9 RLCA RLCA RLCA ADD A,E ; LD E,A ;ADD (9 * DRIVE) TO POINTER ADD HL,DE ; RET ; ; CVMSG IS A ROUTINE TO CHANGE THE VIRTUAL DRIVE MESSAGE. ; ON ENTRY: HL POINTS TO THE BEGINING OF THE NEW MESSAGE. ; DE POINTS TO THE LOCATION OF THE CHARACTER ; WHICH WILL BE SET TO THE LOGICAL DRIVE ; THAT THE VIRTUAL DRIVE IS TO BECOME. ; BC IS THE LENGTH OF THE NEW MESSAGE. ; ; AF,BC,DE,HL ARE CHANGED, ALL OTHER REGS. ARE UNCHANGED. ; CVMSG: DW 191 DB 0E0H DB 0 DW 48 DW 2 ; ; RAMDATX: HSTDSK EQU $-RAMDATX DB 0 HSTTRK EQU $-RAMDATX DB 0 HSTSEC EQU $-RAMDATX DB 0 SECCNT EQU $-RAMDATX DB 1 RETRY EQU $-RAMDATX DB 20 HSTBUF EQU $-RAMDATX DW DSKBUF ERFLAG EQU $-RAMDATX DB 0 PHYTRK EQU $-RAMDATX DB 0 PHYHD EQU $-RAMDATX DB 0 IOADD EQU $-RAMDATX DW 0 SECSIZ EQU $-RAMDATX DW 0 STADD EQU $-RAMDATX DW 0 DW 0 DW 0 DB 0 CMDCNT EQU $-RAMDATX DB 9 CMDBUF EQU $-RAMDATX DW 0 DW 0 DW 0 DW 0 DB 0 ; DATXLN EQU $-RAMDATX ; VNUMB: DB 3 ; # OF PHYSICAL DRIVES - 1 TLEV: DB 0 ; TERMINAL LEVEL ; RAMDATY: SEKDSK EQU $-RAMDATY DS 1 SEKTRK EQU $-RAMDATY DS 1 SEKSEC EQU $-RAMDATY DS 1 ; SEKHST EQU $-RAMDATY DS 1 ; UNACNT EQU $-RAMDATY DS 1 UNADSK EQU $-RAMDATY DS 1 UNATRK EQU $-RAMDATY DS 1 UNASEC EQU $-RAMDATY DS 1 UNAMAX EQU $-RAMDATY DS 1 SECTRK EQU $-RAMDATY DS 1 ; WRTYPE EQU $-RAMDATY DS 1 DFLAG EQU $-RAMDATY DS 1 TRSEC EQU $-RAMDATY DS 1 ; VMSGP EQU $- 1=double. ; Bit 7 Virtual drive: 1=virtual. ; ; Byte 2 Motor on wait time in increments of 4 ms. ; ; Byte 3 Head settle time (after seek) in increments ; of 4 ms. ; ; Byte 4-5 The two parameter bytes for the FDC specify ; command: Byte 4 = SRT/HUT ; Byte 5 = HLT/ND ; ND must be 1. ; ; Byte 6 EOT byte for FDC read or write commands. ; ; Byte 7 GPL byte for FDC read or write commands. ; ; Byte 8 Current track. ; MTAB: MTOFF EQU $-RAMDATY DB 21H DB 0DCH DB 125 DB 4 DB 0BFH DB 3 DB 5 DB 28 DB 0FFH ; DB 22H DB 5DH DB 125 DB 4 DB 0BFH DB 3 DB 5 DB 28 DB 0FFH ; DB 24H DB 5EH DB 125 DB 4 DB 0BFH DB 3 DB 5 DB 28 DB 0FFH ; DB 24H DB 5FH DB 125 DB 4 DB 0BFH DB 3 DB 5 DB 28 DB 0FFH ; DB 21H DB 0DCH DB 125 DB 4 DB 0BFH DB 3 DB 5 DB 28 DB 0FFH ; DIRBUF: DS 128 ; ALV0: DS 25 CSV0: DS 48 ALV1: DS 25 CSV1: DS 48 ALV2: DS 25 CSV2: DS 48 ALV3: DS 25 CSV3: DS 48 ALV4: DS 25 CSV4: DS 4 PUSH HL EX DE,HL XOR A SBC HL,DE LD DE,VMSG ADD HL,DE LD (VDRVP+RAMDATY),HL ; POP HL LDIR RET ; DPBASE EQU $ DPE0: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB0 DW CSV0 DW ALV0 ; DPE1: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB1 DW CSV1 DW ALV1 ; DPE2: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB2 DW CSV2 DW ALV2 ; DPE3: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB3 DW CSV3 DW ALV3 ; DPE4: DW XLT1K DW 0 DW 0 DW 0 DW DIRBUF DW DPB4 DW CSV4 DW ALV4 ; SDPB: DW 40 DB 4 DB 15 DB 1 DW 94 DW 127 DB 0C0H DB 0 DW 32 DW 2 ; DPB0: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB1: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB2: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB3: DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 ; DPB4: DW 40 DB 4 DB 15 DB 1 DW 194 RAMDATY DW VMSG VDRVP EQU $-RAMDATY DW VDRV ; CDSK EQU $-RAMDATY DB 0FFH PDSK EQU $-RAMDATY DB 0 VDSK EQU $-RAMDATY DB 0 ; DMAADR EQU $-RAMDATY DS 2 OUTP EQU $-RAMDATY DW CNOUT INP EQU $-RAMDATY DW CNIN ; ; MTAB contains one 9 byte entry for each logical drive. ; The bytes of each entry are defined as follows: ; ; Byte 0 DSKDEF0: ; Bit 0-2 Motor control bit ; Bit 3-4 Double sided mode: ; 00=Even tracks on side 0, ;  Odd tracks on side 1. ; 01=1st 40 (or 80) tracks ;  on side 0, remaining ;  tracks on side 1. ; 10=Both sides are treated ;  as a single track with ; twice as many sectors. ; Bit 5 Double sided drive if = 1. ; Bit 6 Unused. ; Bit 7 Foreign drive format if = 1. ; ; Byte 1 DSKDEF1: ; Bit 0-1 Physical drive address. ; Bit 2 Double sided media if = 1. ; Bit 3-4 Sector size: ; 00=128 ; 01=256 ; 10=512 ; G11=1024. ; Bit 5 Tracks: 0=40; 1=80. ; Bit 6 Density: 0=single;8 ; VMSG B cr,lf,'Your lower drive is being re-assigned as drive ' VDRV: DB 'A.',cr,lf,'Exchange diskettes and press [RETURN]',0 ; LSTFLG: DB 0FFH ; PRINTER READY FLAG ; ; dcastrt b 1bh,3dh,0ffh dc prefi string ds 3,0ffh ; dcamid: ds 6,0ffh ; dca seperator ; dcaend: ds 6,0ffh ; dca terminator string ; esc_lvl b 0 ;indicate es sequenc level offset1: db 0 ;first character offset offset2: db 0 ;second character offset order: db 1 ;Bit 0 = 0 --> row, then column, ; = 1 --> column, then row ';Bit 1 = 0 --> binary cursor adresses ; 1 --> ascii cursor addresses first: db 0 ; temporary storage of first second: db 0 ; temporary storage of second ; XLTAB: DB 0 DW 40 XLT1K: DB 1,2,3,4,5,6,7,8 DB 25,26,27,28,29,30,31,32 DB 9,10,11,12,13,14,15,16 DB 33,34,35,36,37,38,39,40 DB 17,18,19,20,21,22,23,24 ; DB 0FEH ; CONSOLE XLT TABLE DW CLEN esctbl: DB 0FFH ctrltbl:DB 0FFH escvect:DW 0 ctvect: DW 0 ; ; TRANSLATION STRINGS BUF+1),HIGH CPM + 16 ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; JP BIOS ; DS (BOOT+80H-$),0 ; BTAB: DB 21H DB 0DCH DB 125 DB 4 DB 0AFH DB 3 DB 5 DB 28 DB 0FFH ; DW 40 DB 4 DB 15 DB 1 DW 194 DW 191 DB 0E0H DB 0 DW 48 DW 2 DB 43H ; REVERR: LD DE,RVMSG CALL MESG JP BTERR ; RVMSG: DB CR,LF,'Wrong revision of ROM. This version of CP/M requires ROM Rev. 1.3',CR,LF,0 ; END FOR THE TERMINAL GO HERE ; CLEN EQU $-ESCTBL ; DB 0FFH ;EOT DW BIOS+0A00H-$-57 ;SPACE FOR MORE XLT'S DS (BIOS+0A00H-$-55),0 ; DB 0FDH ;IMS BUFFER HEADER DW 0 ; DS 52,0 ;STACK SPACE ; DSKBUF EQU $ STACK EQU $ ; SIGNON: DB 0DH,0AH,'Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. ' DB ((REV AND 0F0H) SHR 4)+ASC0,'.',(REV AND 0FH)+ASC0 DB CR,LF DB "Copyright '76,'77,'78,'79,'80 Digital Research, Inc." DB CR,LF DB 'Copyright 1982,1983 Morrow Designs, Inc.' DB CR,LF,LF DB '* Double Sided System *' DB CR,LF,0 ; ; BOOT: LD SP,STACK LD IY,RAMDATY LD DE,SIGNON OUT (ROMCTL),A ;TURN ON ROM CALL MSGRM IN A,(ROMCTL) ;TURN OFF ROM ; XOR A LD (3),A LD (4),A ; LD (IY+DFLAG),0 ; LD HL,CPM ; JP GOCPM ; END  DB 0FEH ; CONSOLE XLT TABLE DW CLEN esctbl: DB 0FFH ctrltbl:DB 0FFH escvect:DW 0 ctvect: DW 0 ; ; TRANSLATION STRINGS ; MICRO-DECSION ; BOOT LOADER REV 1.4 ; COPYRIGHT 1982 ; MORROW DESIGNS, INC. ; 11/24/82 ; ;* ; DOUBLE SIDED ;* ; BOOT EQU 0FE00H ; .Z80 .PHASE BOOT ; ; REVNUM EQU 13H ; MEMSIZE EQU 64 ; CPM EQU (MEMSIZE-9)*1024 BIOS EQU CPM+1600H ; MTOFF EQU 26 ; REVADD EQU 7FCH ; HSTSEC EQU 2 HSTTRK EQU 1 HSTBUF EQU 5 SECCNT EQU 3 ERFLAG EQU 7 SECSIZ EQU 12 ; ROM EQU 0 ; RDHST EQU ROM+9 BTERR EQU ROM+18H MESG EQU ROM+3 ; CR EQU 0DH LF EQU 0AH ; START: LD A,(REVADD) CP REVNUM JP NZ,REVERR ; PUSH IY ;CALC. MTAB POSITION POP HL LD DE,MTOFF ADD HL,DE ; EX DE,HL ;MOVE MTAB INTO RAMDATY LD HL,BTAB LD BC,9 LDIR ; LD (IX+HSTSEC),2 LD (IX+SECCNT),8 LD (IX+SECSIZ+1),81H LD (IX+HSTBUF+1),HIGH CPM ; CALL RDHST ; LD A,(IX+ERFLAG) OR A JP NZ,BTERR ; LD (IX+HSTSEC),1 LD (IX+HSTTRK),1 LD (IX+SECCNT),9 LD (IX+HST&R: Morrow Designs Micro-Menu system - Rev 2.2 R: Module - CPMENU.PIL R: Copyright 1982, 1983 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: R:Put message on the screen, and chain to MICRO.PIL or MDWORK if first time up EXIST:INIT.PIL R: if not, go to Micro Menus Tn:{Now loading Micro Menu system, Rev. 2.2. Tn: Please stand by...} CHn:MICRO.PIL CLRS: T:Initializing system for creating working diskettes, please stand by... CPM:ERA INIT.PIL;AUTO PILOT CPMENU CH:MDWORK.PIL END: *=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ͷ 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# ͓ !" >- Ͷ 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. 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  !  #z8O!B N#N ¾SP.* |} !9":q!"28!"9:] !í 1 ë «   Ͷ ͐ =« 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!~  ! _^! ^#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_eEA (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 ;RECALL 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 )*)þ))>+><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"$$$I$$H!!! BH" !I B  $$!BD! $!BI D@"!$I$$H"!I$I$I$UUU$$A$ x (#"!N#FW( *J>7Å*M|N+"M N:LHͅÅD Å >* *͓ b" . *"] !/~##ʁtZ*F#n!Is!^#V&&##&))::^#V#*^#V>+)x-8_; 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 GRAPHIC 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 ARBTHAT 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 PCHAR 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 ; STACK AREA DS 64 ;RESERVE 32 LEVEL STACK STKTOP: ; END ARRY 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 ; SETUP: ;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 ;!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+++ # ; 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 ; SETUP: ;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 ;!!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: *#"͎! 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/!:":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*`#"`:*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**ͪ"*! ͪ":!! 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 *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 :! *+""&! 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: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*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{.*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 *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$LIB$: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!Fq2͔!~(G#~ 2"Ox=2y {͔ͦ22A88͔*A^#V__#>2+n#˖ S&S(S:(*G#~ ( ͔ͦS(,D( ͔ ͔ S<SG:0"*?^#V!p">A2͔ : ͔ͦ (͔͔22O*n f F~!R> ݾ >(!}!>(ݾËP(͔[͔##4͔2P7?(2>2͙C͔:˗G:2^V!!:w#:w#w#~w#ˆ:<ݾj͔nfz2K ~(/ 2 (͔j͔>2~ :(͔T͔1*|(6: ͔ͦR 1:A '*}(>A2͔L͔͔ͦ ͔z͙C|k͔! ! *9*'! ! *3*****!<D L  D DKL ͔1w 0 8 :G(A8_ 0 *Micro-Decision FORMAT program Rev. 2.3!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$: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 $Copyright 1983 Morrow Designs, Inc. !San Leandro, CA $ Disk drive to be used (A-E) $ $ $ Insert diskette to be formatted in drive A, then press [RETURN] $ Single or double sided format (S or D) $D$ Double density -- $Single sided format $Double sided format $ Double density 256 bytes/sector format $ Double density 512 bytes/sector format $ Formatting track 00 $ Write error $ Read error $ Some errors were found on this diskette, use at your own risk.$ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the system diskette in drive A, then press [RETURN] $ Your left drive is being re-assigned as drive A.$ Insert the diskette to be formatted and press [RETURN] $ Insert the system diskette, then press [RETURN] $!M!F_(_P2(2P P(PP(^ (09>2!9^#V!1 Not a SYSTEM Diskette. Cskette, use at your own risk.$ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the system diskette in drive A, then press [RETURN] $ Your left drive is being re-assigned as drive A.$ Insert the diskette to be formatted and press [RETURN] $ Insert the system diskette, then press [RETURN] $!M!_(_P2(2P P(PP1!~ʥ#~ (2Aڥ* Oͤ|ʥ*<~( ¥6#6 ^#V!*A^#VyO >'w#>Pw#E6#6*  No drive specified.$Incorrect drive specified, allowable drives are: B, C, D, or E.$Drive A is now an IBM drive.$Wrong version of CP/M. This version of IBM only works with CP/M Vers 2.2 Rev 1.X, or 2.X$Too many foreign drives are defined. Push reset to clear all foreign drives.$ ?>B2*G2*+2>-A*A^#V__#>2-+n#˖=.S*( .S*G:0"*?^#V!p"*->A2*+͸*A-*͸** (*͸**͸*2-2-OT*n f F~!.+> ݾ >(!%.+!-l+>(ݾ,ò*P(͸*##-^*+͸*2-P7?(2->2-ͽ*C++͸*:-˗G:-2-^V!Q:-w#:-w#w#~w#?) *²*:-<ݾ),͸*nf)z2-K ~( 2-6*ѷ²*~ ~*G,͸*Z,**|(6:*+A '**}(>A2>--͸*w-͸*,͸** zͽ*C,,͸*!-P!P*9+**'!-P!P*3+******!f*n*=/v*,*  n*,* n*K*v*,*  0 8 :G(A8_ 0  $ $ Insert the DESTINATION diskette in drive A, then press [RETURN] $ Single or double sided format (S or D) $ Double density format $ Double density 256 bytes/sector format $ Double density 512 bytes/sector format $ Formatting track 00 $ Write error,(ڒ*͓(Ò*6[+*.B^#V!"Z-! N#F!~#foB,"V-!, w# ST-#+>2\-2-<2-:-!-l*:-!-l*-!- # !+*+72*PY*_-ͭ(!,*+Cc-Sg-Sk-"r-!"e-"i-"m-[r-z*]-=+8bk"t-(*t-@)*t-͐)[t-*r-6+"r-!+"a-:-͊*! ."v-: :,!,͎++!c-)͂+)ͮ*+| !+"a-:-͊*! ."v-2q-: 4,!,͎++!g-):q-O>2q-ͅ+)ͮ*+| !,"a--Sv-!k-)-+͂+)ͮ*-*v- # +| 77"o-N#FCx-#^#VSz-y+[|-͋+DM|+Kv-! "v-+Kx-[-*z-#=+8`i!*o-q#p#s#r .!9%6+|_>g}o"]-[-*-C+[-*-#C+"_-͊*N#FC|- ~#fo2\-Ov+: KT-[V-!,͎+*Z-6Kz- x*a-*+*x-*****0<"~-8H=(0O0y(g+*~-+d+@8_a+d+Og+#+!,*+~Og+#}o|g|}MD!xxGyOY+)[+^+a+d+g+j+m+p+s+v+y+|++Â+Å+È+Ë+Î+ (Error, drive characteristics must be identical, can't copy) Reading track:  Writing track: r%,You have a Level I terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for an ADM-3A terminal. You have a Level II terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for a SOROC IQ-120 terminal. You have a Level III terminal. All programs supplied by Morrow Designs are pre-installed for your terminal. Any programs not supplied by Morrow Designs must be installed for an ADM-31 terminal. The CP/M SYSTEM diskette will not be installed for your terminal. You must install some of the application programs (i.e. WordStar and LogiCalc) yourself. MIn addition, the Micro-Menus will not appear as they should on the screen. RBefore confirming this selection, check to see if your terminal can emulate any of those on the selection Menu. If it can, you will find it more $ Read error,$ on DESTINATION diskette. Press [RETURN] to try again. $ Formatting done$ Press R to start again, or [RETURN] to return to CP/M $ Verifying track 00 $Invalid disk parameter block $ Insert the CP/M DISTRIBUTION diskette in drive A, then press [RETURN] $ Your drive is being re-assigned as drive A.$ Insert the DESTINATION diskette and press [RETURN] $ Insert the CP/M DISTRIBUTION diskette, then press [RETURN] $QMQM-_(-_P.2(.2P 3.P(3.PP(^ (09>2!9^#V!1 Not a SYSTEM Diskette. yT Verifying track:  Copy complete (Data compare error on drive X:.) Retry the copy with a fresh (DESTINATION) diskette. Insert the CP/M DISTRIBUTION DISKETTE, press [RETURN] Insert the DESTINATION diskette, press [RETURN] J!/:@2nD,>2n-ͮBEBvToo many terminals No terminal file readterminal.dat Loading the terminal description file ... LOHIDELLINEDELCHARINSCHARINSLINECEOSCEOLDOWNUPLEFTRIGHTCLRHOMECURSORLEVELSPNULESCu!9!,aH!!y,!~,ͿIywx#w!~#^-!g,aHv!62dv2ev!fvywx#w!> -!~-!~*-!N#F!!M!~#fo ~#fo}0w-!~#fo ~#fo}0-!N#F͈Lv!*dv*dv#"dv!Hʹsfv }|:dvd.:ev'.!S,aHv!H!!N#FX!Ͳ?!~#fo!@ywx#w!N#F!!M!~#fo ~#fo}0w-!Ayw-!> .!~w-!N#F!ʹ1^.u!Βywx#w!~#fo~#fo~/!N#F!~#foN#F͹Wy"/!~#fo##~OGyOGvv!~w#~w./*u!9!!!N#FAAywx#w!~ʜ/!2/!͹Wyœ/!N#F!~w#~w!ͩ/yw=/!~#fo6vu!9!!N#FYywx#w!!N#F.ywx#w!~/#~|0!~#fo~^|0!o##^vywx#w3! 3aHvu!9!!N#F5/!w#w!~#~4!~#fo !~#foMD) ~OG!y{4x#*5!~#fo !~#foMD) #!@ywx#w*5!w#w!~ #~:5!~#fo- !~#foMD) ~OG!y4x#=5!~#fo- !~#foMD) #!@ywx#w=5!~w#~w>4v!~w#~wø4Cursor addressing string too long ASCIIu!9!w#w!~#fo 6!~#fo 6!~#fo 6!~#fo " >2 !!!N#FAAywx#w!~5* 6v!~RT6!~+T6* 6!~#¶6!~#fo ~w!~#fo !8W! }!~#fo " 6!~C6!~+6* 6!~#7!~#fo ~w!~#fo !8W! }!~#fo " N7!~#fo !8W! }!~#fo " >2 !~w#~w5!!p5͹Wy^7!~#fo ~w5!~#fo !8W! }!~#fo " >2 !~w#~w5: 2 : |7!M5aHv* * #" !ͩ/yw5*x[OV!9N#F#^#V#~#fo">kb"!~#fo#"L<*R#"R*d###"d:*oN "P*P*B!oyOx#Gi`*\ }|*s!Hʹsv "d2R2S:R:S<*d#~#B=*B*B##"B*L*\ !oyOx#Gywx#w!!*d#N#F*LdXywx#w*L>!~#fo#"LB=*R#"R*d###"dÚ;*L*`###yOxGi`"X!X:Z:[#U=*X!ZyOx#G:N:OU=!7ͥIU=*R#"R*d###"dl<*L"b*`#:Xw:Y#w*b6*b#*N!XyOx#Gi`*Z }|*oD "P*P~#fo!\yOx#Gi`*o "f*fk>*oB "P*o*P~#fo !\yOx#Gi` "@*@*@#"@:rw*@*s!Hʹsjv ~vu!~#fo~N>!~#fo~OGy>>x[>!~#fo6[>!~#fo6v!~w#~w>u:rOGi`#"j:j:k>*jMD))) !~#fo "l*l!~#fo~*l#!~#fo#~*j#"j{>vu!~#fo~>v!~#fo~?!~#fo~OG=?y?vv!~w#~w>01234567890abcdefABCDEFu!%?!N#FXvu!~#fo~j?v!~#fo~ʖ?!~#fo~0?!~#fo>9?ì?v!~w#~wj?vu!~#fo~?!~#fo~ ?!~#fo~ ?!~#fo~??v!~#fo6!~w#~w!~#fo!~#fo~aL0!~#fo>zL0!~#fo~OG!A MD! MDY0!~#fo~OGyw!!~#fo~OG! }|{1!~#fo~\¹0!~#fo#>yʹ0!!~#fo# @ywx#w{1!N#FT?y0!!N#F8Wywx#w{1!~0#~+1!~#fo~'+1!~#fo##~'+1!!~#fo#~{1!#~H1!!~#~{1!~V1#~p1!!~#fo~{1!>w>#w!~#1!>w>#w!~#foMDv=: Unrecognized word u!9!!!N#FAAywx#w!~1v!!.ywx#w!#~2!aH!1aHv!!!N#FAAywx#w!1!͹WyW2!!~#~!~e2#~€2!N#F!N#Fv5æ2!~Ž2#~©2!N#F!N#FG3v!N#F!N#F!N#F4!~2#~¦2!*!N#F!N#F4æ233334Level number must be 0, 1, 2, or 3 Non-numeric level number u!9!!!N#FAAywx#w!~03!>93!-3aHv!~#fo####!8Wyw!~#fo####~OG!2u!~#fo##w#wv!~#fo##Zvywx#w3!~#fo##\vywx#w3!~#fNo char. translation table found Wrong version of CP/M out of range DCA pointer u*o#"P*P~#foo|g "\*oP "P*o*P~#fo !\yOx#Gi`"^!o:^:_#8*o :^:_8!*s!Hʹskv *^X8!;8OH*^>*^ >*^ >*oF "P*o*P~#fo !\yOx#Gi`"`!o:`:a#X9*o !`yx#`9!#8ͥI*`~OGyp9xʞ9*`~OGyƒ9xʞ9*`*`#~#fo ###"`59*`~OGy®9x¹9!8ͥI*`*`#~#fo ###"b*b~OGy9x9!7ͥI*b#~#fo"N*`#~#fo"Z*`###"@*oH "P*P*@!oyOx#Gi`*\ }|*s!Hʹsv "d2T2U2R2S:R :S:*d#~#;*@*@#"@*d~*T#"T;*@*@#"@6*oJ "P*P*@!oyOx#Gi`*\ }|*s!Hʹsv "d2V2W2R2S:R:S+;*d#~#<*@*@#"@*d~*V#"V<*R#"R*d###"dU:*@*@#"@6*T*V )*@ "L*@"B*oL "P*P*B!oyOx#Gi`*\ }|*s!Hʹsv "d2R2S:R :S&<*d#~#<*B*B##"B*L*\ !oyOx#Gywx#w!!*d#N#F*LdXywx#w*L~w#~wõ?u!w#w!~#fo~OG>yʉ@!N#F!ʹsywx#w+!~#fo~0@!~#fo>9@!!~#fo~OG!  @!~#foMDv!!~#fo~a@!~#fo>z@!~#fo~OG! MD@!~#fo~OG!  !~w#~w@u!!N#FYSywx#w!!N#F!N#FdX!~#foMDvu!!N#FAywx#w!~#fo> A!~#fo~A!N#F!~w#~w!N#F!~w#~w~[A!~#fo6!~#foMDvu!~#fo~ A!~#fo~ A!~w#~wA!~#foMDvu!~#fo~/B!~#fo> 5B!~#fo~5Bvv!~w#~wBu!9!"o͇EV8ElGv selected. OK (Y/N) ?   Select your terminal: OK (Y/N) ? uXD!BaHMIy2u:uaXC!u>zXC:uOG! !dvyx#XC:uaC!u>zC:uOG!A MD! MDC:uOG! !dvyx#XC:uaNC!u>zNC:uOG!A MD! MDTC:uOGy2u:uA2u:uOG!dvyx#|C!BOHüB!~BaH:uOG!Hʹsfv N#FaH!fBaHHy2v!cBaH:vy±B:uOG!Hʹshv ~#fo"w!w~#C*wN#FaHC*`vaH*bvaH!+{ H0HOGMDu!~ +H#~;H! !ͣ7!N#F!ͣ7vu!N#FsHvu!N#FsHv v!~#fo"*~ʠH*~OGH*#"ÁH vu!N#FͺHOHvu!!N#F!ܓYi`ܓ 6!ܓMDvu!N#FHvu!ͣ7y2:IOV:2:A8I!>Z8I:OG! MD?I:OGy2:OGvu!ͣ7y2:gIOV:2:AI!>ZI:OG! MD×I:OGy2:OGvu!N#FaH!OVv v!~#fo"!~#fo"Ji`"!~#I v**MKi`":J:J v***L*MD v v!~#fo"!~#fo"!~#fo"**MKi`":tJ:}J v*͈L***L*MD vuJi`"!~#¹Jv!N#F!N#F*L*MDvu22>2:*K:OG!ʹs$ ~#fo}2K:OG!ʹs "2K*MDv:2JKrKatKw L v!~#fo"!~#fo"*~OG!=Ku!!*ii`"*MD v!!*ki`":·K:K!!*ii`"!!##N#F+++N#F*dZËK!!*w+1P* ~P#~‚P* ~wÍP*#"OO* * ~#fo#MDx22x2y2!s*N#F*~w#~w~OGyOG v* ~ w* w#w v v!~#fo"!~#fo"* ~#fo}P* ~#fo} P*MD v* ~#P*Q*~#fo* yOx#Gi`"!~#ZQ** N#F* N#F͐c!yFQx#ZQ* ~ w v* :22:2:2!s** ~#~* * ~#fo}ʲQõQywx#w:Q:Q*N#F*~w#~w:w* ~w#~w*MD v v!9!~#fo"* ~#[R* ~#fo}ʄR** !* ~#fo }| w #wR!* N#FZxR* #~wR** !! Sywx#w+~#~ i`~#R* ~wR* ~w#~wR!! ##N#F+++N#F* N#FdZx S* ~@w vu!N#FTv v!~#fo"!~#fo"**ʹsi`"*Si`"*"!~#lS v*:2:2}ʗS**#"6lS*MD vu!~#¾S!"*"22*MDv v!~#fo"* !~s#MD v v!~#fo"*SBaHHyyDx±B:u2s2t:uOG!Hʹsjv ~2 v TERMINAL SELECTION MENU u!#D! H:y2y:z2zOECan't read bios u*o"ϓ> 2ѓ2ғ:ѓ!:ғE*ѓ!*ϓ!xFyE!vEͥIEv*ѓ#"ѓ*ϓ}ƀo|g"ϓÚECan't write bios u*o"ӓ> 2Փ2֓:Փ!:֓]F:Փ (F:֓1F4F*Փ!*ӓ!xF! 9y`F!EͥI`Fv*Փ#"Փ*ӓ}ƀo|g"ӓFu!ד:nOG ~OG:nOG!G!ד:nOG 6!!N#F!G!! N#F!!G!!N#F!$G!~# G!!!'Gv!! N#F!*GvCan't write Auto sector PILOT INITPILOT INITCan't read Auto sector u!r9! !!r!xFyʙG!TGͥI!y!IGYyw!!>G!zdX!! !!r!xF! 9yG!%GͥIv!9^#V#N#F#~#fo*++ki`"ËK!"ËK v!9!~#fo"!~#fo"!~#fo"* :w:#w* w#w* w#w* *~r|LLywx#w v v!~#fo"*!͞P* N#Fhi* ~w#~w* ~#fo}M* ~#fo| M* N#FS* ~w#~w M v* w#w* ~w#~wM v!~#fo"*": 2 :!2!hM**#"~OGyOGpM!Ni`":‚M:ʨM: ’M:ʨM**#":w;M*6:ºM:M!:M:#MM*MD v v!~#fo"!~#fo"!~#fo"!:w:#w:2:2!>#N!* ~w#~w+gN*N#F*~w#~w~OGyOGoN*Nywx#w+~€N#~ʧN!N#F!~w#~w!~ N!~#fo6!~¿N#~N!! N #NN*MD v v!~#fo"* ~#fo}O* ~#fo}0O v* ~#0O*Q* ~#fo}@o|g}ʚO22::O*!ʹs$ ~#fo}@o|g}'P*!ʹs !͞P'P* * ~#fo}ʹOüO* N#F* N#F]ywx#w** ~#~* ~w#~i`"͟Si`"*##~#fo"*!  #hT*! ;T #–T*##*##~#~T*"*##~#fo"T!:wT:#ST!͓bi`"!~#T v*!  #**~#fo)) "*:w:#w*"*####MD v*> w>#w*####T*"ST v!~#fo"!~#U v:2:2͟Si`"!::#ҝU*##::#ҝU*~#fo))* *##ygUx#U**##~#fo  #* *##~#fo##~#~U*##::#U!::#HU*##::#HU*##~#fo"(U* *##~#~*~#fo))* !yVx#8V**  #*##* ~#~FV*##:w:#w*" v v!~#fo">2:"W:OG!ʹs ~#fo:OG!ʹs" yOx#Gi`"!~#-W:OG!ʹs$ ~#fo}-W:OG!ʹs" ~#-W*:OG!ʹs" N#F:OG!ʹs& N#F͐c-W*h v:2bV v!~#fo"*~`W*> W*~W2!2"*~0W*>9W*!MD)) )"!*!*~OG! "!*#"gW*#"FW*!MD v v!~#fo"!~#fo"** W v*#"*#"W*~W"~*~~*\*~~ʖ\*~> \*~~\ó\*xw#w!z~#E]!hi!!*zki`"!~#E]*zyq*z!͐c! !i[!͐c!hE]*~~)]*~~<\*~~>\\*~*~#"~6 \*~#"*~]*> ]*~]]*x*x##"x:~w:#w)]*~~>]*"|#]*#"\*"z*"~*~> \*~~\*~#"~)]!|~#ʮ]!hi!!*|ii`":z]:ʮ]*|yq*|!͐c!!Z[!͐c!h!0*x0}o|g!~s%,OVv7^7^^_C^T^L^P^D_u!9!N#Fpki`"!~##^!~#)^v*~OG!]u!~#fo"!~#fo!~#fo "* ~#l^o^y2* ~OG!]uv!N#F!N#F*_vv!::#_!ͣ7y2:^:OGy^x^_**#":wî^: ^î^*!yOx#Gv_!6!! ͣ7! !ͣ7!"!~OG!yx#`_!~OGg_!N#Fy2:ʋ_*~OGyƒ_x²_>2!::#_:_**#"6 _**#"**#"~:2k_vu!z9i!~#fo"!~#fo"v>2!~#fo"!~#fo!~#fo "* ~#ʋd!::#Ҩd**#"~OG:OGͣ77d>2d>2d!~#foMDvv!::#Ҩd*~OG!cu*!yOx#Gv!:d:#d* ~ d! :OGͣ7**#"~OG:OGͣ7Ëd6g ggg Dgu!9!~#fo"!~#fo"!~#fo "!~#fo#\t!>2222!&t##~2!~#fo ~#e!~#h!N#F͔l:ր:4f:4f!"*!ͣ7*!"ͣ7yjfv!y:OG "!"*:2:2}h**#"~2:OG!eu!z!ͣ7*!!ͣ7yʶf!!!zqöf** "!:2:#2!~#fo#22:2:2!s>2Ôe!:OG}o|g"!::#f*MDf*MDi`"**!z:OG r*!"ͣ7yjfv!~#fg!::#Wgfg**#"6 **#":wg!::#e!::#{g~gi`"!~#ʒg*"*!y:OG yOxGi`"!N#F͔l:ր:g!!ͣ7*!!ͣ7y(h!!!q(h!" v v!~#fo"!~#fo"!~#fo"*:2:2}aX**#"**#"~(X v v!~#fo"!"*~#ʱX*~#fo"*~ʾX**#"*~*#"ÌX*6*MD v*##"yX v!~#fo"!~#fo"*~Y*~OG:X: Y v v*#"X v!~#fo"!~#fo"!~#fo":qY*>o>g":qY*>o>g"**#"6-**~s"$!$~#ʢY**$*Y* "**͙s0 }2#!#>9Y:#'2#**#":#w*!yOx#G v v!~#fo"*~ Z*#"Y*!yOx#G vu!!&##N#F+++N#F!N#FdZxNZvv[ZZT[u!N#Fpki`".!.~#‡Zv*. ~DʚZv! ~#foMD!TZu!~2*#~2+#~2,#~2-*.#:*w:+#w:,#w:-#w!~#foMDv*.#\t!!s~2*#~2+#~2,#~2-Z*. ͮjx22x2y2!!s~2*#~2+#~2,#~2-Zv: can't write : can't read u!"~!":22**p!~#[*~*~#"~**#"~:2:2Þ[*~*~#"~6!0"x*x*x##"xw[ywx#w!!~#fo "!~#fo#\t!>2222!&t##~2!~#fo ~#ʥ`!~# b!N#F͔l:ր:/a:/a!"*!ͣ7*!!ͣ7yʜa b22!"*"!~#a!:`:# b!~#fo#22:2:2!s22!N#F͔l!z!ͣ7*!!ͣ7y=ba!z!ͣ7*!!ͣ7y b!:OG}o|g"!::#xa*MD}a*MDi`"*!z:OG *r** "!:2:#2!~#fo#22:2:2!s>2T`!~#fo#22:2:2!s*!yOx#Gv*~2:OGy7bxSba!z:OG ">2 b*#"*#": ʹ`:ʹ`**#":w:2:2ù`u!9!:w:#w!*!~#fo }|!:w:#w!!}|!w>#w!!yOx#G!yx# cv!!  #Zc!!  #Zc!!  #Zc!~#fo"!~#foMDvvcccxdTpdLhdPdCcDdd ddui!~#ʺc!N#Fpki`"!~#cv*~OG!`cu* ~OG!lcuv!N#F!N#F*"e!y!ͣ7*!"ͣ7yphv*!y:OG !:OG r!!ͣ7*!"ͣ7yphv!y">2!~#fo#22:2:2!s!~#Wg**#"6 !~#Wgfg*!yOx#Gvu!w#w!~#~i!N#Fhi!~w#~wh!ͣ7vu! ͣ7y5i22v*#"::ei!ͣ7yZixei!ͣ7vu!N#Fpki`"!~#‹iv* ~Di*~i* !ͣ7i`":•i!>>#i* 6!~#foMDv!>w>#wiu!~#j!~ j#~j!>w#wmi`"Õ!Õ~#.jv*Õ!N#F͉myJjv*Õ ~D„j*Õ !ͣ7*Õ !ͣ7xjv*Õ 6!N#F!N#F!N#Fkvu!N#F!#ͣ7yjxj!ŕ\tv!~#fo! MD 2222!!~#fo" MD 2222!!ktʹu!~#fo# MD 2222!!ktʹu>22>2>2!uvu!#~k!~#~kv!N#F!,ʹsݕ "ɕ*ɕ ~ºkv*ɕMDvu!~#k!~k#~k!>w#wmi`"˕!˕~#l*ӕ#"ӕ!N#F!~w#~w~o!~#fo~Pp!~#fo~.Pp!~w#~w%p!~#fo~.kp!~w#~w2ٕ2ڕ:ٕ:ڕp!~#fo~p*ӕ*ӕ#"ӕ6 p*ە *ە *ە *ە 6~ w~v*ӕ*ӕ#"ӕ!N#F!~w#~w~*ٕ#"ٕrpu!N#F!~w#~w}vq!~#fo!~#fo~AVq!~#fo>ZVq!~#fo~OG! MDcq!~#fo~OGyw!~w#~wqvu!!~#~!~#fo~ʭq!~w#~wÐq!~#fo!yOx#Gvu!N#F!~w#~w}r!N#F!~w#~w!~qvu!N#F!~w#~w}Xr!N#F!~w#~w!N#F!~w#~w~ r!~#foMDvu!~#fo!~#fo ʢrv!~w#~w!~w#~whr!~#fo~…rv!9~w#~w#~w#~w+MD!9 _ #ڿr{ !94ÿr! 9~ s+w>#w! 9N#FxsO>G͵r-sO>G! 9q#pKv! 9~Os+w>#w! 9N#FxcsO>G͵rssO>G! 9q#pKv! 9N#F͵r! 9q#pKv! 9N#F͵r! 9q#pKv!! 9~+s~s! 9N#F ! 9~w#~w! 9~w+~wús!9q#pKv!9N#dv*˕!N#F͉mylv*˕ ~DPl*˕ !ͣ7xPl*˕ 6v*˕!~*˕#w#w#w#w*˕ !~#~*˕ݕ}o|g!,~sMDvu!~#fo#~2͕#~2Ε#~2ϕ#~2Е!~#fo "ѕ*ѕ! !͕!t##~*ѕ" !͕!t##~*ѕ# !͕!t##~vu!ݕywx#w!~#~Cm!~#fo ~Xm!~#~hmv!~,w#~w#m!~#foMDvRDR:PTP:CON:LST:u!9!~#ʲm!~#fo~ʲm!~#¸mv!N#Fyqi`"ٕ:ٕ :ڕmv!"ӕ!~#fo"Օ*Օ~@n*ӕ~w*ӕ*Օ~a$n*Օ>z$n*Օ~OG! MD,n*Օ~OGyw*ӕ#"ӕ*Օ#"Օm*ӕ6!!}|:ٕan:ڕ˜n!~#fo###~:˜n!m!N#Feryn>L2ٕ2ڕ]o!~#fo 6D!~#fo "ە*ە6!~#fo#~:‡o!~#fo~2ٕ2ڕ:ٕA:ڕo!ٕ>P>#oo!m!N#Feryo>C2ٕ2ڕ]o!zm!N#Fery=o>P2ٕ2ڕ]o!um!N#Feryso>T2ٕ2ڕ!~#fo :ٕwv!~#fo 6v*ە#"ӕ2ٕ2ڕ:ٕ:ڕ%p!~#fo~o!~#fo~.oov*ە*ٕ }!~w#~wÇo*ӕ*ӕ#"ӕ6 *ٕ#"ٕÕo*ӕF!9~#fo ## # +++ #Kv!9N#F!9~#fo  # # #Kv~#~#~#~#~#~#~#~!9~{t/<ñtKvO!9~#fo##~w#~w+++~w#~w ˆtKv!9~t/<{tKvO!9~#fo##+~~w+~w###~w+~w ¿tKv!9~t/<{tKvO!9~#fo##+~w+~w###~w+~w tKv!9~#foN#F#N#F! 9~#foN#F#N#F!!9~+++ʔu~ju!9MD!9  # # #!9~w#~w#~w#~w!9~w+~w+~w+~w;u!9N#F!9~#~}|! 9Kv!9N#F!9~#fo  # # #Kv~#u#~#foy#ux#u+++~#fo##u!9!9***i`!"""!9N#F###q#p+++q!9N#F#q#p(()q*a+dz!,Zv= EQRW()*YT--- ---,, ,, , ,T,Y,E,Q,W,R,(,),V2.1: copyright (c) 1979 by Whitesmiths, Ltd.^CCC;2*ͧ !9N#F#^#V#~#fo"S$kb"Q$i`"O$OG dPress the RESET button and when asked to do so, insert the CP/M SYSTEM DISKETTE into drive A. mWhen you get the Menu display, we suggest you first make a back-up copy of your new CP/M SYSTEM DISKETTE. ?Next, label the DESTINATION diskette "CP/M SYSTEM DISKETTE." The DESTINATION diskette is now a configured CP/M SYSTEM DISKETTE for your Micro-Decision. Put your CP/M Distribution Diskette away in a safe place. a:terminal.data:init.003a:init.002a:init.001a:init.comb:terminal.datb:init.003b:init.002b:init.001b:init.cominit.003 CP/M DISTRIBUTION diskette is defective. Contact your dealer or Morrow Designs customer service for a replacement. init.002 Now copying CP/M DISTRIBUTION diskette. DESTINATION diskette may be flawed. Replace with another diskette, then press any key.init.001 b Preparing to format DESTINATION diskette. #6J!U !y y2X$:X$3!U ! y2X$:X$A:Y$OG!j CCC;p:Y$T!_'!T'!I'!>'!/'|!C ú:X$3!sC Q!$'!'!'!'!'!U !QU ! U !U !2U ä#ͱ#customized CP/M system. This diskette will be called the DESTINATION diskette. It must be soft-sectored, but need not be blank. However, any information currently on it will be erased. yCP/M Distribution Diskette Use this diskette to create a CP/M SYSTEM DISKETTE customized for your Micro-Decision and terminal. You will need a diskette to receive the #!pC !C # Your single drive Micro-Decision will require you to change diskettes at various times during this process. Be sure to follow the instructions which appear on the screen. disk drive(s). OK (Y/N)   How many disk drives do you have? (1-4) #!U y2\$:\$1m!\$>4҉!\$> U:\$U!U U:\$OG! }2Y$!U :\$OG !U y2\$:\$yM:Y$2>2]$2^$*]$~#foo|gD "]$*]$~#fo"_$*_$ :Y$ > #*z$"|$!~#fo"z$*|$MD##!~#fo"'!~#fo"'!~#fo"':'y *'>o>g"':'y *'>o>g"'*'*'#"'6-*'*'""$!$~#ʪ *'*$*' *' "'*'*')"0 }2~$!~$>9 :~$'2~$*'*'#"':~$w*'!yOx#G##!"'*'~#1*'N#F4*'N#F!N#F͢*'##"' ##!~#fo"'*'~T*'#"'B*'!yOx#G#CBT<L<PDm#!9!N#Fi`"$!~#ʷ!$~#½#*$~OG!gâ#!~#fo"$!~#fo!~#fo "$*$ ~#y2$*$ ~OG!sâ##!N#F!N#F*$s##!$:$:$#җ! y2$:$y:$OGysxŒ×*$*$#"$:$wB:$ yB*$!yOx#G#×!6!! ! ! !"$!~OG!yx#!~OG!N#Fy2$:$*$~OGyxF>2$!$:$:$#җ:$—*$*$#"$6 ×*$*$#"$*$*$#"$~:$2$##!z9-!~#fo"$!~#fo"$!~#fo "$!~#fo#'"!'>2'2'2'2'!'Ͷ"##~2$!~#fo ~#9!$~#ʡ!N#F$:$$*$#"$~OG:$OG ÝH --- V#!9!~#fo"$!~#fo"$!~#fo "$!~#fo#'"!'>2'2'2'2'!'Ͷ"##~2$!~#fo ~#!$~#!N#F$:$ր:$F:$F!"$*$! *$!" y|#!y:$OG "$!"$*$:$2$:$2$}*$*$#"$~2$:$OG! â#!z! *$!! y!!!zU *$*$ "$!$:$2$:$#2$!~#fo#2'2':$2':$2'!'͈">2$æ!:$OG}o|g"$!$:$:$#*$MD*$MDi`"$*$*$!z:$OG ͗ *$!" y|#!$~#x!$:$:$#ix*$*$#"$6 *$*$#"$:$w-!$:$:$#!$:$:$#ҍÐi`"$!$~#ʤ*$"$*$!y:$OG yOxGi`"$!N#F$:$ր:$!! *$!! y:!!!U :!"$!y! *$!" yʂ#*$!y:$OG !:$OG ͗ !! *$!" yʂ#!y"$>2$!~#fo#2'2':$2':$2'!'͈"!$~#i*$*$#"$6 !$~#ix*$!yOx#G##!w#w!~#2U$!LC ##!~  #~/ ! ! !N#F! ##!N#Fg ##!N#Fg ##!~#fo"'*'~ʔ *'~OG *'#"'u ##!N#Fͮ C ##!!N#F!a$ i`a$ 6!a$MD##!N#F ##! y2i$:i$ :i$2i$:i$A, !i$>Z, :i$OG! MD3 :i$OGy2i$:i$OG##! y2j$:j$[ :j$2j$:j$A !j$>Z :j$OG! MDË :j$OGy2j$:j$OG##!N#FU ! #!9^#V#N#F#~#fo*+++{ 0 OGMDkb" * ]T: file not found #!~#fo"'*'"k$*k$> 4 *k$~4 *k$#"k$ *k$~J *k$*k$#"k$6*k$4y2!*k$!͂ !!*'Ry2o$:o$ !! *'! #2m$>(2n$!*m$:o$OG͋i`"p$!p$># :o$OGz2r$>(2s$ !N#F*r$#i`"t$ ! *t$MD#*m$*p$ "m$è #:Y$OGi`#"v$:v$:w$ *v$MD))) !~#fo "x$*x$!~#fo~*x$#!~#fo#~*v$#"v$. ##!~#fo"'!"'*'~# *'~#fo"'*'~ *'*'#"'*'~*'#"'ê *'6*'MD#*'##"'× #!N#F*z$#i`"z$ր:$:$!"$*$! *$!! y0á2$2$!"$*$"$!$~#|!$:$e:$#´!~#fo#2'2':$2':$2'!'͈"2$2$!N#F$!z! *$!! y|!z! *$!! y¡!:$OG}o|g"$!$:$:$# *$MD*$MDi`"$*$!z:$OG *$͗ *$*$ "$!$:$2$:$#2$!~#fo#2'2':$2':$2'!'͈">2$!~#fo#2'2':$2':$2'!'͈"*$!yOx#G#*$~2$:$OGyx|!z:$OG "$>2$ô*$#"$*$#"$:$ M:$M*$*$#"$:$w:$2$:$2$M#!9!!N#FyL#!! ycxl##TLzPCD #-!~#!N#Fi`"$!$~##*$~OG!râ#*$ ~OG!~â##!N#F!N#F*$4#>2$!~#fo"$!~#fo!~#fo "$*$ ~#ʝ!$:$:$#Һ*$*$#"$~OG:$OG I>2$>2$!~#foMD##!$:$:$#Һ*$~OG!â#*$!yOx#G#!:$:$#*$ ~ ! :$OG *O~"!N#Fz!~w#~w! ##! yG2$2$#*$#"$:$:$w! ylxw! ##!N#Fi`"$!$~##*$ ~D*$~*$ ! i`"$:$!$>>#*$ 6!~#foMD#!>w>#w#!#~!~#~!#!N#F!,D"$ "$*$ ~J#*$MD##!~#{!~m#~{!>w#w͠i`"$!$~#’#*$!N#Fy®#*$ ~D*$ ! x*$ 6#*$!~*$#w#w#w#w*$ !~#~*$$}o|g!,"MD##!~#fo#~2$#~2$#~2$#~2$!~#fo "$*$! !$!j###~*$" !$!j###~*$# !$!j###~##!$ywx#w!'~#~!~#fo ~!'~#~#!~,w#~wó!~#foMD#RDR:PTP:CON:LST:#!9!~#B!~#fo~B!~#H#!N#F i`"$:$ :$l#!"$!~#fo"$*$~*$~w*$*$~a*$>z*$~OG! MDü*$~OGyw*$#"$*$#"$~*$6!!}|:$:$(!~#fo###~!~#fo 2!#!~w#~w!~w#~w !~#fo~!#!9~w#~w#~w#~w+MD!9 _ #O!{ !94O!! 9~!+w>#w! 9N#Fx!O>GE!ҽ!O>G! 9q#p$! 9~!+w>#w! 9N#Fx!O>GE!"O>G! 9q#p$! 9N#FE!! 9q#p$! 9N#FE!! 9q#p$!! 9~+}"~c"! 9N#F ! 9~w#~w! 9~w+~wJ"!9q#p$!9N#F!9~#fo ## # +++ #$!9N#F!9~#fo  # # #$~#~#~#~#~#~#~#~!9~ #/L2$2$!~#fo 6D!~#fo "$*$6!~#fo#~:!~#fo~2$2$:$A:$P!$>P>#VP!!N#F yʪ>C2$2$! !N#F y>P2$2$!!N#F y>T2$2$!~#fo :$w#!~#fo 6#*$#"$2$2$:$:$!~#fo~t!~#fo~.Œt#*$*$ }!~w#~w*$*$#"$6 *$#"$%*$*$#"$!N#F!~w#~w~Â!~#fo~!~#fo~.!~w#~wõ!~#fo~.!~w#~w2$2$:$:$-!~#fo~]*$*$#"$6 Ã*$ *$ *$ *$ 6~ w~#*$*$#"$!N#F!~w#~w~*$#"$#!N#F!~w#~w} !~#fo!~#fo~A!~#fo>Z!~#fo~OG! MD!~#fo~OGyw!~w#~wÐ##!!~#~!~#fo~= !~w#~w !~#fo!yOx#G##!N#F!~w#~w}ʔ !N#F!~w#~w!~X ##!N#F!~w#~w} !N#F!~w#~w!N#F!~w#~w~Ú !~#foMD##!~#foCC * T: * ;Attempting to use the supplied application programs without * T: * ;creating working diskettes will cause improper operation of * T: * of these programs. * T: * * T: *} T: Press {[RETURN]} to create your working diskettes: INMAX:1 *LOOP CUR:51,22 A: M: , Jn:*LOOP CLRS: LF:10 T:{Please stand by... CH:CPMENU END: 6Y: !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+: Y2A 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#Wres the use of three disk T:drives. The Micro Decision's unique Virtual Drive feature, allows T:you to create working diskettes regardless of how many physical T:disk drives you actually have. T: T: *Press {RETURN} when you're ready to go T: FPress {ESC} to go back to the main menu A: *MAIN U:*MSG *SELECT CLRS: T: The following is a list of the programs included with your Micro T: Decision. To create a working diskette containing one of these T: programs, enter its number after the {OPTION} prompt. LF:2 T: {1} WordStar T: {2} LogiCalc T: {3} Correct-It T: {4} Personal Pearl T: {5} Quest T: {6} BaZic T: {7} MBASIC T: {ESC} Return to main menu T: {R} To Review instructions T: T: {OPTION}: *action cur: 10,15 inmax:1 a: m: 1 , 2 , 3 , 4 , 5 , 6 , 7 , R , jn:*action cur:0,15 M: R , JY:*MAIN CLRS: M:1 JY:*wordstar M:2 JY:*logicalc M:3 JY:*correct M:4 JY:*pearl M:5 JY:*quest M:6 JY:*bazic M:7 JY:@ 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 O: 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 "= ! R:Morrow Designs Micro-Menu system - Rev 2.2 R: double sided version R: Module - MDWORK.PIL R: Copyright 1982, 1983 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: ESC:*return CLRS: R: change this from lower to left depending on the position of drive R: A. DEF:$POSITION lower LF:1 T: #{CREATE A WORKING DISKETTE} T: T: This option creates a "working diskette" for any of the T:supplied software. When done, you will have a diskette with all T:the necessary files for a particular application program, and it T:will be installed for your terminal -- automatically! In addition, T:your distribution copies of the software will be backed-up, and T:can be put away for safe keeping. T: T: You must have a spare diskette for each of the working T:diskettes to be created. The diskette doesn't have to be blank, T:but any information on it will be erased. T: T: "Creating a working diskette requi*mbasic *wordstar def: $PROG WSU def: $NAME WORDSTAR def: $INSTALL INSTWS u: *check u:*format def: $PROG WS c:a=@9 - 2 j(a):*lvl3ws c: a=a+1 j(a):*lvl2ws c: a=a+1 j(a):*lvl1ws u:*levelmsg cpm:PIP;B:=C:WSU.COM;B:=C:*.OVR;B:=C:EXAMPLE.TXT;B:=C:INSTWS.COM; j:*complete *lvl1ws cpm:PIP;B:ws.com=C:ws1.com;B:=C:*.ovr;B:=C:example.txt; j:*complete *lvl2ws cpm:PIP;B:ws.com=C:ws2.com;B:=C:*.ovr;B:=C:example.txt; j:*complete *lvl3ws cpm:PIP;B:ws.com=C:ws3.com;B:=C:*.ovr;B:=C:example.txt; J:*complete *logicalc def: $PROG LC def: $NAME LogiCalc def: $INSTALL LCSET u: *check u:*format c:a=@9 - 2 j(a):*lvl3lc c: a=a+1 j(a):*lvl2lc c: a=a+1 j(a):*lvl1lc u:*levelmsg cpm:PIP;B:=C:LC*.*;B:=C:BALSHEET.LCF; j:*complete *lvl1lc cpm:PIP;B:termcap.sys=C:termcap1.sys;B:=C:lc*.*;B:=C:balsheet.lcf;;era b:lcset.*; j:*complete *lvl2lc cpm:PIP;B:termcap.sys=C:termcap2.sys;B:=C:lc*.*;B:=C:balsheet.lcf;;era b:lcset.*; j:*complete *lvl3lc cpm:PIP;B:termcap.sys=C:termcap3.sys;B:=C:lc*.*;B:: Pearl installation program to make a personalized copy for your use. T: T: Before getting started, you should label the five diskettes exactly as T: shown here: T: T: {1} Pearl disk 1 backup T: {2} 6Welcome, Produce Reports, Enter Data, LogiCalc T: {3} Starter Library T: {4} Sort T: {5} {Design Forms and Reports, File Maintenance T: TNR: {After}labeling the diskettes, you should press {RETURN.} A: C: a=5 *formatloop CLRS: T: TNR: Insert disk #a in in your upper disk drive, and press {RETURN.} A: CPM:FORMAT B D|SYSGEN;A;B;; C:a=a-1 J(a):*formatloop CLRS: T: Still with me? Good. Let's go! T: T: Be sure to follow the instructions, we can't afford mistakes. T: *wrong T: Insert your initialized diskette labelled{Pearl disk 1 backup} in your T:{UPPER} disk drive. T: T: You will then be told to insert your "SOURCE" diskette in drive A. When T: this happens, insert the diskette labelled {PERSONAL PEARL DISTRIBUTION T: DISKETTE ... DISK 1 OF 2} in the {LOWER} diskstarted. T: T: You will be using your {Pearl disk 1 backup} disk in your lower drive. T: Insert it when requested. T: TNR: Press{RETURN}to continue. A: CLRS: T:{Have a nice trip.Y CPM:PAUSE WELCOME "Backup"|WELCOME|A:RETURN| CLRS: T: T: I trust you had no major problems. There is now just one step remaining. T: T: You will need to insert each of your four personalized Pearl diskettes T: in the {UPPER} disk drive one by one. After placing a diskette in the T: disk drive, press{RETURN.} T: T: Insert your Welcome disk in the{UPPER} disk drive at this time, and press TNR:{RETURN.} U:*copyreturn T: Insert your Starter Library disk in the {UPPER}disk drive. U:*copyreturn T: Insert your SORT disk in the {UPPER}disk drive. U:*copyreturn T: Insert your Design Forms disk in the {UPPER}disk drive. U:*copyreturn J:*pearldone *copyreturn A: CPM:PIP B:=A:RETURN.COM; CLRS: e: *pearldone T: T: Congratulations! You have completed the Personal Pearl installation. T: T: Now is a =C:balsheet.lcf;;era b:lcset.*; j:*complete *correct def: $PROG CORRECT def: $NAME Correct-It u: *check u:*format cpm:PIP B:=C:*.* j:*complete *pearl clrs: T: T: Personal Pearl is a very powerful application program. In making it so T: versatile however, the user is faced with what may seem to be an endless T: installation procedure. We have tried to make his procedure as clean, T: and straight-forward as possible. If you follow all the instructions, T: you should end up with configured working copies of the Personal Pearl T: data base management program. T: T: This is a lengthy procedure, so you should have at least half an hour T: set aside. If you do not want to make working copies of Personal Pearl T: at this time, press {ESC.} TNR: To make working copies, press {RETURN} A: clrs: T: T: You will need five blank diskettes to make a working copy of Personal T: Pearl. First they will all be initialized. You will then use the Personal T drive. T: T: The system will then make a copy of the diskette. When the copy is T: complete, insert your {CP/M SYSTEM DISKETTE} in your lower drive, and T: press {RETURN.} T: TNR: With your {Pearl disk 1 backup} in your{upper}drive, press {RETURN.} A: EXIST:B:WELCOME.COM JN:*backuppearl CLRS: BELL: T: T: Sorry, but you put the wrong disk in the {UPPER} disk drive. be sure to T: read these instructions carefully: J:*wrong *backuppearl cpm:backup|SYSGEN;A;B;;PIP B:=A:RETURN.COM; CLRS: T: T: So far, so good. You will now be put in the hands of Personal Pearl's T: Personalization program. T: T: After telling Personal Pearl what kind of terminal you have, you will T: be presented with three choices. Personalize, Demonstrate, or Exit. T: Feel free to try the demonstration out. it's sort of a "test drive" if T: you will. When you have satisfied your curiosity, select the option to T: Personalize Pearl. This will allow Personal Pearl to complete the job T: you so innocently Mgood time to take a nice, long, well deserved break. I promise T: that no other supplied software is as slow to install. T: T: If you press{RETURN}, you will find yourself back at the long forgotten TNR: Working Diskettes Menu. A: J:*SELECT *quest CLRS: T: T: You have two choices here. If you have just received your system you must T: first create your working Instructional disks (Option 1). This option is T: used for demonstration and training purposes only. T: T: When you are ready to set-up your company data and put Quest to work for T: you, you will need to create a new "Data" Disk. The procedure in Option 2 T: will guide you through the necessary steps to do this. You must have sent T: in your registration to Quest Inc. See your Quest manual for information T: about registering your copy of Quest. T: T: {1} Create Quest Instructional Diskettes T: {2} Create Quest (registered) Data Diskettes T: {R} Return to previous menu T: T:{OPTION:} *questloop CUR:10,15 "C," insert the diskette labelled {Quest Distribution Diskette... T: ...Instructional Disk} in your lower drive and press {return.} When the T: lower drive is assigned back as drive A, remove the Distribution diskette, T: and replace it with your CP/M System Diskette, and press {RETURN.} T: TNR: Press return to continue. A: CPM:PIP B:=C:*.*; def: $QUEST POSTING U: *questcopy CPM:BACKUP| def: $QUEST REPORTING U: *questcopy CPM:BACKUP| T: T: You now have an instructional copy of the Quest bookkeeper system. T: Place your distribution version away in a safe place.} T: T: Press {RETURN} to return to the Create Working Diskettes Menu. A: J:*SELECT *questcopy CLRS: T: T: Now, insert the diskette you labelled $QUEST disk in your upper disk T: drive. You will be asked to insert a {SOURCE} diskette in drive A (your T: lower disk drive). When this request is made, insert your {DISTRIBUTION} T: copy of the quest $QUEST disk in drive A, and press {RETURN.} T: T: Press {RETURN} toof the Quest Instructional (DATA) T: disk in drive A, and press {RETURN.} T: T: Press {RETURN} when you are ready to continue... A: CPM:BACKUP|SYSGEN;A;B;;PIP B:=A:RETURN.COM; CLRS: T:}Now, take the{TEMPORARY INSTRUCTIONAL}diskette out of drive B, and insert T: the diskette labelled {PRODUCTION} in drive B instead. T: T: As we continue, you will be asked to insert your {WORKING} diskette for T: Quest in drive A. At that point, insert the diskette you labelled as T:{TEMPORARY INSTRUCTIONAL}instead, and follow with a {RETURN.} This will T: cause Quest to create a production version of Quest for your company. T: T: The Quest installation program that is about to run will state that you T: must have the Quest Instructional diskette in drive A, and a newly con- T: figured CP/M System diskette in drive B. Ignore the message. The correct T: diskettes for the drives are as follows: T: T: {DRIVE B} -- This should now have the diskette you labelled {PRODUCTION.} T: T: {DRIVE A} -- When told t Inmax:1 A: M: 1 , 2 , R , Jn:*questloop M: R , JY:*SELECT M: 1 , JN:*production clrs: T: Creating a Demonstration copy of Quest requires three blank diskettes. T: Label the three blank diskettes as: T: T: {1} Instructional Disk T: {2} Posting Disk T: {3} Reporting Disk T: TNR: Press{RETURN} when you have the diskettes labelled. A: CLRS: T: Insert the diskette you labelled "Instructional" disk in your upper disk T: drive, and press{RETURN. T: DO NOT PUT YOUR DISTRIBUTION DISK IN THE DISK DRIVE!} A: CPM:FORMAT B D;SYSGEN;A;B;;Auto *B: KP;PIP B:=A:RETURN.COM; CLRS: T: Insert the diskette you labelled "Posting" disk in your upper disk drive, T: and press{RETURN.} A: CPM:FORMAT B D CLRS: T: Insert the diskette you labelled "Reporting" disk in your upper drive and T: press{RETURN.} A: CPM:FORMAT B D CLRS: T: T: Now take the diskette you labelled "Instructional" disk, and place it in T: your upper disk drive. When your lower disk drive is re-assigned to be T: drive continue. A: E: *production clrs: T:}You will need two blank diskettes. One of the blank diskettes will only T: be used for making the production diskette, and should be labelled as T:{"TEMPORARY INSTRUCTIONAL".} The other blank diskette will become the T: Production disk for your company, and should be labelled {"PRODUCTION".} T: After labelling the diskettes, insert the blank {PRODUCTION} diskette in T: drive B, and press {RETURN.} A: CPM:FORMAT B D;SYSGEN;A;B;;AUTO *B: KP;PIP B:=A:RETURN.COM; CLRS: T:}Insert the blank{TEMPORARY INSTRUCTIONAL} diskette in drive B, and press T:{RETURN.} A: CPM:FORMAT B D; CLRS: T:}Leave the {TEMPORARY INSTRUCTIONAL} diskette in drive B, and go get your T: distribution copy of the diskette that Quest calls "Instructional (DATA) T: disk". T: Remember? You said you would put it in a safe place. T: Go get it now. T: T: When we continue, you will be asked to put a{SOURCE}diskette in drive A. T: At that time, put your{DISTRIBUTION COPY}1o insert your {WORKING} diskette for Quest in T: 9drive A, you must insert the diskette you labelled as T: {TEMPORARY INSTRUCTIONAL.} T: T: When you are ready to continue, press {RETURN.} A: CPM:PAUSE KINS QUEST|KINS|B:RETURN| CLRS: T:}You now have a completed Quest PRODUCTION data disk for your company. The T: {TEMPORARY INSTRUCTIONAL} disk is no longer needed. T: T: To return to the Create Working Diskettes Menu, press {RETURN.} A: J:*SELECT *bazic def: $PROG BAZIC08 def: $NAME baZic u: *check u:*format cpm:PIP;B:=C:BAZ*.com;B:=C:CRT.002; def: $PROG BAZIC j:*complete *mbasic def: $PROG MBASIC def: $NAME MBASIC u: *check u:*format cpm:PIP;B:=C:MBASIC.COM;B:=C:OBASIC.COM;B:=C:RANTEST.BAS; j:*complete r:=b r:Subroutines referenced above *check c:a = @8-1 t(a): Place the $NAME distribution diskette in drive C. j(a):*OVER t:When your $POSITION drive is re-assigned as drive C, put inGO T:Press {[RETURN]} to continue. A: CPM:FORMAT B D| E: *MSG C: A=@8-1 U(A):*DRIVE3 E(A): C:A=A+1 U(A):*DRIVE2 E(A): U:*DRIVE1 E: *DRIVE1 CLRS: T: You have a single drive Micro Decision. Because of this, T:when creating working diskettes, extensive use of the Virtual T:Drive feature will take place. You will be instructed at various T:times to exchange the diskette in the drive with another T:diskette. It is very important that you follow the instructions T:as they appear on the screen, and place the diskette requested in T:the drive. T: T: Whenever the system re-assigns the drive to be {Drive A,} T: place your {CP/M SYSTEM DISKETTE} in the drive. T: T: qWhenever the system re-assigns the drive to be {Drive B.} T: place the {SPARE} diskette in the drive. T: T: }Whenever the system re-assigns the drive to be {Drive C,} T: place the {DISTRIBUTION} diskette in the drive. T: T: yPress {[RETURN]} to corun $INSTALL to set up the program for your T: terminal. T: T: Press {RETURN} to create your working diskette of $NAME. A: E: *complete CPM:SYSGEN;A;B;;AUTO *B: $PROG;PIP;B:=RETURN.COM;B:=PIP.COM;B:=STAT.COM;; CLRS: CUR:0,12 T:Function complete. T:You now have a $NAME working diskette. Put the Distribution copy away T:for safe keeping. You shouldn't need it unless something happens to T:the working copy you just made. CUR:13,22 T:Press{RETURN}to go back to the working diskette menu. inmax:1 A: J:*SELECT *return CLRS: T:Returning to main menu, please stand by... ch: micro ( your t:$NAME distribution diskette. t: t:When the drive is assigned back as drive A, put in the CP/M system t:diskette. *OVER exist: C:$PROG.com clrsn: belln: tn:You didn't put in the right diskette. We will go back and tn:review which diskette goes in which drive. Tn: CPMN: Tn: When you are ready to review the instructions, press Tn:{[RETURN]} an: un:*MSG jn:*check t: t: O.K. you have the correct Distribution diskette, press {[RETURN]} t: to continue. a: e: *format CLRS: C:A=@8 T(A):Place the {SPARE} diskette in drive B. J(A):*GO T:{When the $POSITION drive is re-assigned as drive B, Be sure to T:remove the CPM SYSTEM diskette and replace it with the SPARE T:diskette.} The SPARE diskette will then be formatted. {Failure T:to replace the system diskette will cause it to be erased.}When T:the formatting is complete, and you get the message that the T:drive is being re-assigned as drive A, place the CP/M SYSTEM T:diskette back in the drive. *ntinue A: E: *DRIVE2 CLRS: T: T: You have a dual drive Micro Decision. Because of this, when T:creating working diskettes, {Drive A}will be re-assigned at times T:to become {Drive C.} It is very important that you place the T:correct diskette in the $POSITION drive when it is re-assigned. T: T: ~Whenever the system re-assigns the drive to be {Drive A,} T: place your {CP/M SYSTEM DISKETTE} in the drive. T: T: {Whenever the system re-assigns the drive to be {Drive C,} T: place your {DISTRIBUTION} diskette in the drive. T: T: >Drive B should always have the {SPARE} diskette in it. T: T: >Press {[RETURN]} to continue A: E: *DRIVE3 CLRS: T: T: vPlace the {SPARE} diskette in Drive B, and place the T:appropriate {DISTRIBUTION} diskette in Drive C. T: T: Press {[RETURN]} to continue A: E: *levelmsg CLRS: T: T: You have a {LEVEL 0} terminal. When done creating your working diskette of T: $NAME, you must c|LC|A:RETURN| T:} J:*BEGIN *CORRECT CLRS: T:{Preparing to run Correct-It. Please stand by... CPM:PAUSE CORRECT Correct-It|CORRECT|A:RETURN| T:} J:*BEGIN *PEARL ESC:*BEGIN U:*PEARLMENU *INPUTLOOP4 INMAX:1 CUR:23,16 A: M: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , JN:*INPUTLOOP4 M: 1 , 4 , 5 , 8 , CY:A=1 JY:*PROMPT M:6 , CY:A=3 JY:*PROMPT C:A=4 *PROMPT M: 1 , DEFY:$PROG WELCOME M: 2 , DEFY:$PROG PEARLDF M: 3 , DEFY:$PROG PEARLDR M: 4 , DEFY:$PROG PEARLED M: 5 , DEFY:$PROG PEARLPR M: 6 , DEFY:$PROG PSORT M: 7 , DEFY:$PROG PEARLFM M: 8 , DEFY:$PROG MAKELCF CLRS: LF: 10 T:{The Personal Pearl Working diskette to use is number #A WAIT: CLRS: T:{Preparing to run Personal Pearl. Please stand by... CPM:PAUSE $PROG PEARL|$PROG|A:RETURN| T:} J:*BEGIN *QUEST CLRS: LF:3 T:Insert your{QUEST POSTING DISK}in drive B at this time. T: T:When requested, insert your{QUEST INSTRUCTIONAL}(DATA){DISK} in drive A. T: T:After inserting the QUEST POSTING DISK in drive B, pre J(B):*RFRSH CUR: 0,22 T:Do you want the file to go to the screen{(S),}or the printer{(P)?} INMAX:1 TNR:Enter{S}or{P:} *INPUTLOOP6 CUR: 15,23 A: M: S , P , JN:*INPUTLOOP6 M: S , CLRS: Ty:Now getting file... Ty:Press{CONTROL-S}to start and stop the scrolling.{ CPMY:PIP CON:=$DRIVE:$FILE| TY:}Press{RETURN}when done viewing file. JY:*DELAY Jy:*UTILITY T:{Getting file to print.r CPM:PIP LST:=$DRIVE:$FILE| T:} J:*UTILITY *COPY R:Copy a file or files to another diskette U:*CLEAR CUR:0,22 T:Do you want to copy all the files on the current drive{(Y or N)?} *INPUTLOOP8 CUR:66,22 INMAX:1 A: M: Y , N , Jn:*INPUTLOOP8 INMAX: 13 M: N , Jn: *NEXT U: *GETFILE J(B):*RFRSH U: *DSTDRIVE CLRS: T:Preparing to copy $FILE from Drive $DRIVE to Drive $DSTDRV T:Please stand by...{ CPM:PIP $DSTDRV:=$DRIVE:$FILE T:} J:*UTILITY *NEXT U: *DSTDRIVE CLRS: T:Preparing to copy all files from Drive $DRIVE to Drive $DSTDRV T:Please stand by...{ CPM:PIP $DSTDRV:=$DRIVE:*.* T:} J: *UTILITYR: Morrow Designs Micro-Menu system - Rev 2.2 R: double sided version R: Module - MICRO.PIL R: Copyright 1982, 1983 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: R: The next lines define $drive variable to R: avoid "Variable not found" error msg. DEF: $FILE DEF: $DRIVE B DEF: $DSTDRV B R: display main menu *BEGIN ESC:*EXITMENU U: *MENU1 U: *STATUS U: *CHANGEMSG *INPUTLOOP3 INMAX:1 CUR:26,17 A: M: C , JN:*LABEL1 UY: *CHANGE J:*INPUTLOOP3 *LABEL1 M: 1 , 2 , 3, ,4 , 5 , 6 , 7 , 8 , 9 , U , JN:*INPUTLOOP3 CLRS: M: 1 , JY: *WORDSTAR M: 2 , JY: *LOGICALC M: 3 , JY: *CORRECT M: 4 , JY: *PEARL M: 5 , JY: *QUEST M: 6 , JY: *MBASIC M: 7 , JY: *BAZIC M: 8 , JY: *TUTORIAL M: 9 , JY: *CREATE M: U , J: *UTILITY *WORDSTAR CLRS: T:{Preparing to run WordStar. Please stand by... CPM:PAUSE WS WordStar|WS|A:RETURN| T:} J:*BEGIN *LOGICALC CLRS: T:{Preparing to run LogiCalc. Please stand by... CPM:PAUSE LC LogiCalss return T:to run QUEST. INMAX:1 A: INMAX:80 CPM:PAUSE KP QUEST|KP|A:RETURN| T:} J:*BEGIN *MBASIC CLRS: T:{Preparing to run Microsoft BASIC. Please stand by... CPM:PAUSE MBASIC MBASIC|MBASIC|A:RETURN| T:} J:*BEGIN *BAZIC CLRS: T:{Preparing to run BaZic. Please stand by... CPM:PAUSE BAZIC08 BaZic|BAZIC|A:RETURN| T:} J:*BEGIN *TUTORIAL T:{Loading tutorial menu... CH:TUTORIAL.PIL *CREATE T:{Loading working diskettes menu... CH:MDWORK.PIL *UTILITY ESC:*BEGIN U:*MENU2 *RFRSH U:STATUS U:*CHANGEMSG *INPUTLOOP5 INMAX:1 CUR:26,18 A: M: C , JN:*LABEL2 UY:*CHANGE J:*INPUTLOOP5 *LABEL2 INMAX:80 M: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , JN:*INPUTLOOP5 M: 1 , CHY:MDWORK.PIL M: 2 , JY:*DIR M: 3 , JY:*TYPE M: 4 , JY:*COPY M: 5 , JY:*FORMAT M: 6 , JY:*BACKUP M: 7 , JY:*STAT M: 8 , JY:*CPM M: 9 , J:*OTHER *DIR CLRS: T:Now getting directory, Please stand by...{ CPM:DIR $DRIVE: T:}Press {RETURN} when done viewing directory J:*DELAY *TYPE U:*GETFILE ) *DSTDRIVE U:*CLEAR CUR:0,22 T:What drive are you copying to? U: *DRVSEL M: , Jy:*DSTDRIVE DEF: $DSTDRV $TEMP E: R: general purpose drive logging subroutine *DRVSEL INMAX:1 TNR:Enter the drive letter (A,B,C,D,E) *LOOP2 CUR:34,22 A: M: , Jy:*DOWN M: , A , B , C , D , E , Jn: *LOOP2 SAVE: $TEMP INMAX:80 *DOWN E: *FORMAT CLRS: LF:4 T: This selection may be used to format diskettes for use with your Micro T: Decision, or to put a copy of the CP/M operating system on a diskette T: (SYSGEN). Formatting a diskette completely erases any information on it, T: so{be careful}about which diskette you insert in the drive for formatting. T: T: {1} Format a diskette T: {2} Sysgen to a diskette T: T: To exit without formatting any diskettes, press{E}. LF:2 TNR:->} *FRMTLOOP CUR:8,15 INMAX:1 A: M: 1 , 2 , E , JN:*FRMTLOOP M: E , JY:*UTILITY M: 1 , JN:*SYSGEN CLRS: T:Preparing to format, please stand by...{ CPM:FORMAT| T:} J:*UTILITY *SYSGEN CLRS: T T:Do you want to check the size of a file{(F),} or the space remaining on a TNR:diskette{(D).} Enter{F}or{D:} *INPUTLOOP9 CUR:29,23 INMAX:1 A: M: D , F , Jn:*INPUTLOOP9 M: F , R: Perform stat on a file UY:*GETFILE J(B):*RFRSH CLRSY: TY:Checking the size of $DRIVE:$FILE TY:Please stand by...{ CPMY:STAT $DRIVE:$FILE TY:}Press{RETURN} to go back to the menu. JY:*DELAY R: perform stat on a disk CLRS: T:Checking the amount of space remaining on drive $DRIVE. T:Please stand by.{ CPM:STAT $DRIVE: T:}Press{RETURN}to go back to the menu. J:*DELAY *CPM CLRS: T: T:This menu allows you to enter CP/M commands directly. It can be T:used by the curious to experiment with, and learn about CP/M. T:It can also be used by experienced CP/M users to perform a command T:directly. T: T:To use this menu, just type a valid CP/M command, followed by T:{RETURN.} T: T: Press{RETURN} only to go back to the utility menu. T: T:{COMMAND:} *GETCOM CUR: 10,11 A: $COMMAND R: NULL COMMAND? M: {M A I N M E N U} T: This menu is your road map through the CP/M operating system. To T: perform these functions, just enter the appropriate number after T: the prompt below, then follow the instructions given. LF:1 T: {1 WordStar} Word Processing T: {2 LogiCalc} Financial Analysis T: {3 Correct-It} Spelling Checker / Corrector T: {4 Personal Pearl} Data Base Manager T: {5 Quest} Bookeeper System T: {6 MBASIC-80} Microsoft BASIC T: {7 BaZic} North Star Compatible BASIC T: {8 CP/M Tutorial menu} CP/M Learning Tool T: {9 Create working diskettes} T: {U Utility menu} T: {ESC Exit to CP/M} LF:1 T: {Enter your selection:} E: R:= R: *MENU2 CLRS: T: {U T I L I T Y M E N U} T: T: This menu allows you to perform a number of everyday utility functions. T: The function to be performed is selected by entering the number T: corresponding to the function desired. For so: When the SYSGEN program is run, it will pause and ask for a {DESTINATION} T: Drive. At this point, enter the drive name (A-E) you wish to have the T: system transferred to. T: T: To exit from the SYSGEN prompt, press {RETURN} when asked to enter a T: DESTINATION drive. T: T: To continue, hit any key. A: CPM:SYSGEN;A| J:*UTILITY *BACKUP CLRS: T: T: T: {Use this function to make backup copies of your diskettes.} T: T: This procedure copies the entire contents of a source diskette, T: to the destination diskette. The destination diskette must have T: been formatted before being used. T: T: {DRIVE A:} is used for the {SOURCE} diskette, and T: {DRIVE B:} is used for the {DESTINATION} diskette. T: T: {Do not change diskettes until requested to do so by the system.} T: T: Press {RETURN} when you are ready to procede. T: T: To exit without backing up any diskettes, press {E}. TNR:-> INMAX:1 A: M: E , Jy:*UTILITY T:{ CPM:BACKUP| T:} J:*UTILITY *STAT U:CLEAR CUR:0,22, R: If so, go back to the utility menu JY: *UTILITY CLRS: T:After certain CP/M commands, you must press{CONTROL-C}when ready to return T:to the Micro Menus. T: T:Now executing command, please stand by...{ CPM:$COMMAND| T:} J:*UTILITY *OTHER U:CLEAR CUR:0,22 T:Do you want to Erase{(E),} or Rename{(R)}a file? TNR:Enter{E}or{R:} *INPUTLOOPA CUR:14,23 INMAX:1 A: M: E , R , Jn:*INPUTLOOPA M: E , JN:*RENAME U:*GETFILE J(B):*RFRSH CUR:0,22 T:Press{RETURN}to erase $DRIVE:$FILE, or{A}to abort. INMAX:1 A: M: , CLRSY: TY:Now erasing $DRIVE:$FILE{ CPMY:ERA $DRIVE:$FILE T:} J:*UTILITY *RENAME U:GETFILE J(B):*RFRSH DEF:$OLDNAME $FILE U:*CLEAR CUR:0,22 T:Enter new name of file: CUR:23,22 INMAX:13 A: SAVE:$FILE CLRS: T:Now renaming $DRIVE:$OLDNAME. The new name will be $DRIVE:$FILE.{ CPM:REN $DRIVE:$FILE=$DRIVE:$OLDNAME T:} J:*UTILITY R:=- R: R: Menu displays R: *MENU1 CLRS: T: me of the functions to T: work, you should set the{CURRENT DRIVE}to the drive that is to be used. T:{ T: 1 Create a working diskette T: 2 Display a diskette directory T: 3 View or Print a file T: 4 Copy a file or files T: 5 Format or Sysgen a diskette T: 6 Make a backup diskette T: 7 Check diskette and file size T: 8 Execute a CP/M command T: 9 Rename or erase a file T: ESC Return to Main Menu T: T: Enter your selection:} E: R: R:=+ R:PEARL MENU *PEARLMENU CLRS: LF:1 T: Personal Pearl function selection menu LF:1 T: See your Personal Pearl manual for a description of the options given LF:2 T: {1} Welcome (Demonstartion and installation) T: {2} Design Forms T: {3} Design Reports T: {4} Enter Data T: {5} Produce Reports T: {6} Sort Data T: {7} File Maintainance T: {8} Create a LogiCalc format file T: {ESC} Exit to main menu LF:1 T:{Enter your selection:} E: R: R:= *GETFILE R: Get the file to use for a command C:B=0 U:*CLEAR CUR:0,22 TNR:Press{RETURN}to use the file shown, or enter a new file name{:} $FILE CUR:64,22 INMAX:13 A: M: , SAVEN: $FILE *EXISTCHK EXIST:$DRIVE:$FILE Jy:*EXITGF U:*CLEAR CUR: 0,21 BELL: T:{ERROR: Cannot find "$FILE" on Drive $DRIVE.} Check spelling. T:You may search on another Drive{(D),}re-enter file name{(R),} TNR:or abort{(A)}the command? *INPUTLOOP7 CUR:26,23 INMAX:1 A: M: D , R , A , Jn:*INPUTLOOP7 M: A , R: variable 'B' is set as a condition flag to indicate abort was selected Cy:B=1 Jy:*EXITGF M: R , Jy:*GETFILE U:*CHANGE J:*EXISTCHK *EXITGF U:*CLEAR E: R:=L *CLEAR R: This routine clears messages from the status area CUR:0,21 T:  T:  TNR: = R: Subroutines invoked from above R: *STATUS R: This routine refreshes the status lines (20-24) on the screen CUR:0,19 T:- T:{CURRENT DRIVE:}$DRIVE: T:  T:  TNR: E: R:=p *CHANGE R: This routine is used to change the current drive R: All messages appear in the status area of the screen. R: U:*CLEAR INMAX:1 R: Get the new drive CUR:0,22 T: {Enter new drive ( A,B,C,D,E )} *INPUTLOOP2 CUR:16,20 A: M: A , B , C , D , E , , BELLn: Jn: *INPUTLOOP2 M: , SAVEn: $DRIVE U:*CLEAR *EXIT U:*CHANGEMSG INMAX:13 E: R:= E: R:= *CHANGEMSG R: This routine simply puts a message in the status area to indicate what to R: press to change the current drive. CUR: 15,22 T: To change the current drive, press 'C'. E: R:= R: This routine waits until a key is pressed, and goes back to the Utility R: Menu. *DELAY WAIT: M: TIMEOUT , JY:*DELAY J:*UTILITY R:=e *EXITMENU CLRS: T:{To re-enter the menu system, type 'PILOT CPMENU' followed by [RETURN]. END: =L *CLEAR R: This routine clears messages from the status area CUR:0,21 T:  T:  TNR: u1!~#~ (2/A* O|*<~W( *A^#VyO >'w#>Xw#6#6*C^#V>>(#^#V# ås#r ^#V!)  No drive specified.$Incorrect drive specified, allowable drives are: B, C, D, or E.$Drive A is now a MORROW MICRO-DECISION drive.$Wrong version of CP/M. This version of MORROW only works with CP/M Vers 2.2 Rev 1.X, or 2.X$Portions of CP/M are missing from memory. Push reset to re-boot CP/M.$(^  MORROW $$$',COPYRIGHT (C) DIGITAL RESEARCH, 1980 1] ʑ?ʑ! __0 r))) O @|r}r.g))å{O INVALID MEMORY SIZE$!$ʡ~/w/wʔ|g*"T|?¸>@G!g>0w#w!h4~:60+4XO!N#F! ix, # =!v"T!Q6!O#+hw+wT >ZxG}o|g"V! :m c p!"xp ~#c*V!:m ʅ xä SYNCRONIZATION ERROR$ {°~#o}oҼüÅ*TZ# :m G!N#F! D!9>0w#w !:4~:60+4*g"?O READY FOR "SYSGEN" OR "SAVE 00 CPM00.COM"$*V  CONSTRUCTING 00K CP/M Vers. 2.2$IZE $ ABS MOD END $0 ͤê BAD HEX DIGIT$:] f:m f!lw#ʁ2\!6ͤê INPUT FILE NOT PRESENT$0ͤê INVALID RELOCATION BASE$Sͤê BAD INPUT RECORD$oͤêMISSING FILE NAME$ͤêCANNOT CREATE OUTPUT FILE$ ^.3CPM COMXXRh:™! 666 6 ~666 6 ~g!}(0C Wrong revision of ROM. This version of CP/M requires ROM Rev. 1.3 3;3q2!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*\X &COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<2 !2:2a{_:ʖ:>Ľʖ:=2–!B!6#5ʖ:Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ ""͌#>?͌͘ =_.:;<> Oo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER"!yO#< Ty#O 321y_͸2y2ͽ:˜1͘A͌>>͌92^ :¥.!_~#fow]!v"!çREAD ERRORçNO FILE^:""C {2!"E 9" 1A 22!ty)K!G_^#V*C   ~E , &-AGMS  !!!>2 CP/M error: Drive A $invalid.$file read only.$ile R/O$ :B A2 ! ~6  O͐  : E  B 2 >: b # : y! 4 5~yy 5 6y Ґ ^H @Oy H  H : – ͬ   #H : !  H ù  H  H $O͐ : 2 *C N#  x : 2 p & x ~+é 7 2 H ! >w _ : ! 5ͤ N k ͱ ¦ ͱ xʊ #N x : ! 2 ͤ ! 5™ #wO ~x½  p H    y< < ʑ  : !qMD # 2E > T! ^#V w#P :B O|^#V#"##"##"##"!O *!O *|!6ʝ 6>*w#w*w#w'û *! J * ""!N#F*^#V*~#foyx *{_zW+ * *C ^ O T  *C ~w D  -'   -@ ͦ ~^ *C  O x ! N!Fwyxʋ>ڋ>*C w~#+w#w+ɯ2E 22 i  ^ *C :~w~͔͔# #  w ~>2!E 5T *C !"C  "C !w# F! w͌ x 2͢ *C  ~<wʃG:!ʎì 4~ʶ ¬:<ʶ$ ʶïZͻ   x >2>2ͻ :!Z2:E w ̈́ ͊ Ͳ  >2>2T *C G ͻ : w ̈́ n> 2;O ^ DM;}H> "*C  ::dd slO s#r:E ͊ :==»y==»*Ww# *" ͸ *:G#š" ͸ :!w4!i w: Z!E ~=26 2*C !!~~#~O~G#n,-.‹! w! yG!x͢.:E <ʄ! q!pQ:E <. ʄ$.:E <ʄ i 6}2E x N! ~态O>G~G!~G} *C !r#r#r ^ ͥ_y#x#{ ! ~ 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!~Ypsp2mÆÆf ͧÆFILE EXISTS _: É: :ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~22\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: ! Â$$$ SUBC yx # *DM*s#r*s#ryOxG*0MD!!N: E G>O: \ S *C  :q n& ^#V> O^ "*}:*)= ":O:o"*C  *C !ͮ ~2~2ͦ :2ͮ : O:w:w |g}o *# ) :B O! yoxg*:B O }!N#F "*#*s#r^  ~!J  ! J *:o$*C ~i 6i w**{#z r+s{ozg**͕ **  , w͜ ͸ Ͳ ! !N#F$**O !~#:A #~$=2E k͌ : :/GyO>2!q*C " ͡  ʔ*J Ҕ^ :Oyʃ?|x | s-|N-# S:2E !~Яw > T   D ^ 6k -äPYy 5*{zBK52*C ~=2u:B 2~2wE:A *C w>" !""2B !" !r QQQâ~?ͦ ~?r Q *"C Q- Q͜QüQr Q$Q*):B  " *)*)Q;*"E :;:A  2A QÓQÜQ*C }/_|/*W}_*"}o|g":ʑ*C 6:ʑw:2E* *E }DQ>2 RH@@zÀè05:?aI<11  *!666 6~6666~!:>222!"!"*"~ w 6:O>:"( O(O( :"˿2">!>>r+s##^6#Vs#{:" ˿~(˷2"~r#^#V#: />6>`>2*J6*N ^#V~O6#:(()1>=(2*H 66*L>2y2>2:2>2O::G{_!rOO6!r{_O6 =1O+K| !}"]}$^}$_}!}x+~111<*F=U 0w1G~# \1 d10P1x0G0&06 "F= ʐ1 ʐ16 Ö10}1ͱ k1å1ͱ k10ß1 ;1ù1:0 ʞ: ù1:: 1 1:"%@ʞ: ʞ:> ;:Þ::@1*@4I2* @~82G+#2~/_2~F2=G+~F23*2+<=C2+;2~>.33?*@O DEU Ă2=ʦ3%2,ʰ3 ʰ3 ʰ3;ʰ3!) 3w+ Ô2"{3q3(:> 63:<.33PX 2|2>:f3)0R3>) Your lower drive is being re-assigned as drive A. Exchange diskettes and press [RETURN]=5( !"#$%&'(,@ "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$@"$"$! n$I$I$UUI $ @@ B$HA$DDBBI   "@@@D@"@D  TTTTPn  tH@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$E$@H! "!$$" @B$!!!DH$$"H @u@BHH  !$$A"D!r~((#H>ɯy0 8 G>06>:OG(yI(yo 2 >2:> =7o0͝!!!91 >8}C u!y0~ j#ͣ! +W_z#{ (  V(˖y2&i))))L  ^#V ~2 ##>V(>2!tly2y2C+͝!!6 6 ͝!! q y ~w~w~w~w~(35~ (~ ~ 4~ 046 6 6~-#~^S(( (+++sxw F (#~ݾ ~ݾ ~ݾ(, N Z~w~w~w V = n &)^V^V ^  ~ >  **͝!! N q66i`#z n& ~ 6!͝6!͝6!͝~__RK"& ^ ^@' ^p ^^(^ (0(0(0(0(0 Micro-Decision -- 64K CP/M Vers. 2.2 -- Rev. 1.6 Copyright '76,'77,'78,'79,'80 Digital Research, Inc. Copyright 1982,1983 Morrow Designs, Inc. * Double Sided System *% 1 ! 226 !à@$@B B HH II$@DI ABI$"$H$H@$$I! H*  $H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$A DI$@ A$@$E$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"D1!~#~ (2KA* O|*<~f( *C^#V>>(#^#V##^#VB8j!6#s#rs#r ^#V!%*A^#VyO >'w#>w#`6 #6E  No drive specified.$Incorrect drive specified, allowable drives are: B, C, D, or E.$Drive A is now an OSBORNE drive.$Wrong version of CP/M. This version of OSB only works with CP/M Vers 2.2 Rev 1.X, or 2.X$Too many foreign drives are defined. Push reset to clear all foreign drives.$  -?MORROW COMPMOVCPM COMfQRSTUVWOSB $$$21xͪ'ͪ*C^#V>(#^#V##"Q^#VSS##^#V*SR*Qs#r#6#6#6#!U!Nx?#͞]> ?Œ͞3> # ?à ~!]>}J P 3 t  (0 > :g. 3  P 3 t   '$ Insert your WORKING diskette for $ in Drive A, and press [RETURN].$ The diskette in Drive A is not a WORKING $ diskette. $ To return to the Micro Menus, press [ESC] . $ Invalid command line. Returning to Micro Menu. $ $ A:PILOT COMng to Micro Menu. $ $ A:PILOT COM*OB!9N#F#^#V#~#fo"Hmkb"Fmi`"DmOGPilot - L. W. Edmondson - Morrow Designs - 1982CASEDIEIEXISTINSTALLOUTCPMCHCALLLOADLFCURCLRSCOMPILEHOLDSAVEWAITESCDEFERASTRBELLRCENDEUJMCMINMAXAPRTNRTͼllͼl!>>#y'y+!B+"*!~#fo##N#F4ll!9!~#fo"ly*bs!!͏6*bs ~#fo}0nl!͞#!>Ni`"To!^o:Uo2Xy2Yy:Uo2[y:To2Zy!Xyͪh!^GStack overflow    <  zG ? 9#3!" {p-" v$ : Unrecognized instruction l!9!~#fo"ly*ly i`"s*s~*¢*s#N i`"s*s i`"s2s2s*ly"s*s~*s~:*s~(!s~#*s#"s*s~ l*s#"sï*s~)!s~#*s6*s#"s>2s*s"s*s~L*s~:L*s~(L*s~A*s>ZÚ:sas!s>zs:sOG!A MD! MDz:sOGy2s:sY¶:Qm¶l*s#"s*s~a*s>z*s~2sÐ:sN:Qml!s~#*s>l*s"s*s~A*s>Z*s~s͵*sü*s͵!*s͸ !~ʼ!ü!bo:\oJ :]oX !Bü:\o2\o:]o2]o*\o~2^o#~2_o#~2`o#~2ao!!^o##N#F+++N#F*bs3ü!*s͸ !Rm!uü*s#*s͵*s͍ ü*s͵*süü*s -*s͍ !@͍ !Bül!~#fo"ly*ly~ < *ly~ < *ly~ F *ly#"ly! *lyMDll!~#fo"ly*ly i`"ly*ly> *ly~ *ly#"lyi *lyMDll!~#fo"ly*ly~ *ly~2s:s{ ! ͡ !͡ !(͡ × l:s} ! ͡ !͡ !)͡ × :s  ! ͡ ! ͡ × :s^‹ *ly ~^‹ *ly ~OG'"yʋ *ly ~OG'"yʋ *ly ~2s*ly 6*ly ͡ *ly :sw*ly###"ly× :sOG͡ *ly#"lyÛ ͼl!N#F! ll!~#fo"ly!~#fo"hy*ly i`"ly*ly~@ *ly~$ *ly~* *ly~#3 *hy*hy#"hy*ly*ly#"ly~*ly~A *ly>Z *ly~0v *ly>9v *ly~0 *ly>9 *hy*hy#"hy*ly*ly#"ly~E *ly~A *ly>Z *ly~a *ly>z *ly~_ *ly~ *hy*hy#"hy*ly*ly#"ly~ *ly~a *ly>z *ly~0 *ly>9 *ly~_ *hy*hy#"#F*ly͍yʌ*s##N#FͣA*s##*hyjywx#wl*Xo#"Xo*Xo))*hsq=i`"hs*Xo))*hs  "s*s*lyjywx#w*s##*hyjywx#wl*s####"sl!~#fo"ly*ly~#*ly  i`"ly*ly~l*fs"s*Vo))*fs :s:s*sN#F*ly͍yf*s##!~#~l*Vo#"Vo*Vo))*fsq=i`"fs*Vo))*fs  "s*s*lyjywx#w*s##!~#~l*s####"sl!~#fo"ly*ly~$‘*ly#"ly*ly~(*ly#"ly*ly>Ni`*ly  "s*s~)*s6*hs"s*Xo))*hs :s:s*sN#F*ly͍y*s##~#foMDl*lyMDl*s####"sl!~#fo"ly*ly~#:*ly#"ly*fs"s*Vo))*fs :s:sz*sN#F*ly͍yʀ*s##~#foMDll*s####"s@l!~#fo"ly!~#fo"hy*ly~2s*hy~2s:sA!s>Z:sOG!a MD! MD:sOGy2s:sA !s>Z :sOG!a MD! MD:sOGy2s!s:s9l*ly#"ly*hy#"hyæ:s(ll!~#fo"ly*ly~t*ly> z*ly~zll*ly#"lyTl!~#fo"ly!~#fo"hy*ly~«l*hy~*ly"s*hy"t*s~ll*s#"s*t#"tÿ*s~2t*t~2t:tA!t>Za*s>z*s#"s!s:s':s#-l:s2s:s2s*s*s~aj*s>zj*s~OG!A MD! MDr*s~OGyw*s~Yʎ*s~Nʎ*s#"s*s6*s;!×l!s~#ʼ*s*s>"l>2s!!!s͉:sa!s>z:sOG!A MD! MD:sOGy2s:sR¼*s0ü!*Zo!Rm͉!*s͸ !~$V!Rm!uü!~#¼!Rm͞G!͙ü>2s2s*s"s!*s͸ i`"s!~!͙yʆ!͞Gi`"s!s~#ʆ*s*Zo!Rm͉!*s͸ !~$!Rm!uü!~#¼!Rm͞G!͙ü!͡ ü!^s:\o;:]oN!͍ !B*\o*\o####"\o:^ow:_o#w:`o#w:ao#w*s0ü!͡ ü*swü*s ü!*s͸ i`"s*s~ʾ*s#"s*s#*s͵*s!uü>2Lmü>2Lmü*MmͣA>2Lm!*s͸ !Fy"2Mm2Nmü!ji`"MmüͶüͽü!B*s͵*s i`"s!*s0*!͢y2Qmü*sFyʔ>P2Zo2[oü*s1i`"Zoü*s1i`"s*s:s2s:s2s}ʼ!\͍ ñ!,*s6 ü!^*s6 ü*s#*hy*ly*ly#"ly~ *hy6*lyMDll!~#fo"ly*ly~*B *ly#"ly*Ro#"Ro*RoMD) )*dsq=i`"ds!*RoMD) )*ds  }|!~#fo*lyjywx#w!~#fo##!~#~#~#~lͼl2s2s!Ro:s:s# *sMD) )*ds N#FͣA*s#"s 2Ro2Solͼl!9ͺ !w#w#w#w*bsk5*bs!!͏6*bs ~#fo}0x*bsk5l!!>Nx2Xy2Yyx2[yy2Zy!Xyͪh! i`"s*s~*N!*s͸ !~N!##N#F+++N#F!# Nread.pill!9!~#fo"ly*ly!.;Ky!!*ly!YK!"ly!bs~#$*bsS3!!!*lya`yw!~W*ly!!B!!~OGj1i`"bs*OmͣA*lyji`"Om!bo"\o2^o2_o2`o2ao*MmͣA2Mm2Nml: Label not found Missing label l!~#fo"ly*ly~**ly#"ly*ly~!͍ !B*ds"s*RoMD) )*ds :s:sI*sN#F*ly͍yd*s##Xyil*ly͍ !͍ !Bl*s}o|g"s l!~#fo"ly!~#fo"hy*ly~$ž*ly#"ly*ly~(*ly#"ly*ly>Ni`*ly  "s*s~)*s6*ly~l*hs"s*Xo))*hs :s:s5*sN:tOG!a MD! MD :tOGy2t:tAK!t>ZK:tOG!a MD! MDR:tOGy2t!t:t*hy#"hyëͼl!!N#F>N͗@ywx#w!!N#F!N#FYK!~#foMDll!9!~#fo"ly*ly"t*t~*t~$*t~#*t~`*t~l*t#"t!"t*ly"t2 t2 t*t~=*t6!!*lyYKl*t~$i*t#~$•*t*t#"t6$*t##"t*t~#*t#~#*t*t#"t6#*t##"t!*t͸ i`"t!!s*tYKi`"t*t~`,*t#~`Z*t*t#"t6`*t##"t!*t͸ i`"t!!*tYKi`"t*t~.z*t" t*t*t#"t*t*t#"t~! t~#i* t"t*t#"t2 t2 t*t*t#"t*t*t#"t~l!~#fo"ly*ly~µl*ly~*ly~0*ly>9l*ly#"lyõlͼl!!N#F! t Li` t 6! tMDl: can't access ͼl!N#F͍ !͍ lͼl!jsywx#w!~#fo#~#ʌ!~#fo#N#F!N#F͍yʒ!~#fo~OGll!~w#~wNͼl!U9!U!N#Fe-!y! !!U! yw!~!>ll!~#fo"ly!!(t*ly>N*lyH*(tMDll!9!~#fo"ly!*ly͸ !"ly*ly~0v*ly>9v*ly͞Gl*lylTIMEOUTl!~#fo"ly!~#fo"hy!~#>2,t!!#~~+~ !>2Xy2Yy>2[y>2Zy!Xỳk>2,t*ly"*t"y-:,t!~###M*hy!*lyJl>2,ty2-t:-tq*ly"*t͍!>2Xy2Yy>2[y>2Zy!Xyil:-t’*ly"*t! ͡ ! ͡ :-tʢ:-t!ly:*t±:+t#:*t2*t:+t2+t:-t :-t ! ͡ **t6l**t**t#"*t:-tw**t!lyyOx#G!hyyx#ͼl! lͼl! lͼl!9!!N#F͸ !:Xy2^o:Yy2_o:Zy2`o:[y2ao!!^o##N#F+++N#F*bs3lͼl:Lmšl!Mm~#«!B*Mm0lͼl*fs".t*Vo))*fs :.t:/t*.t##w#w*.t####".tÿll!~#fo"ly*ly~ *ly~OG *ly#"lylͼl!N#F! ll!9!~#fo"ly!~#fo"hy>2Qm!"0t*ly͵*ly#*ly"2t*2t~ʼ *0t*0t##"0t:2tw:3t#w*2t~ *2t~OG!hyy¯ x# *2t#"2tÔ *0tw#w!"0t*0t~#!!Rm*0tN#F1!y"!>2Qm"!*2t~ʼ *2t~OG$*fs"t*RoMD) )*ds :>t:?t&*Bt!5$8*Bt*>tN#F8*Bt!3$8*Bt*>t####N#F+++N#F)8*Bt!1$8*>t}o|g">t%*Bt!/$8!bo"@t!\o:@t:At#_&*Bt*@t##N#F+++N#F)8*Bt!-$8*@t####"@t&*Bt!+$8*Bt!)$8*Bt!^o##N#F+++N#F)8*Bt!'$8!Mm~#&*Bt!%$8*Bt*Mm8*Bt!#$8:Qm&*Bt! $8&*Bt!$8*Bt!$8*Bt*Om8*Bt!$8*BtS3l(^(-(+(:(>}(.T(#/($'*,(a:xstatex.pilreadreada:xstatex.pilͼl!9!f'!k'͊0i`"Gt!Gt~#¢'l*Gt!!͏6*Gt ~#fo}0'!Om~#4)l!#!"Dt*Dt~OG!+'×l!*Dt͸ i`"Dt*DtC!Xy##N#F+++N#F!# â'â'!*Dt͸ i`"Dt*Dt#!uâ'!*Dt͸ i`"Dt*Dt͞G!͙â'*Dt#C:Xy2^o:Yy2_o:Zy2`o:[y2aoâ'*OmͣA*Dt#ji`"Omâ'*Dt#ji`"Mmâ'>2Qmâ'>2Qmâ'*Dt#"Dt!bo"\o!*Dt͸ i`"Dt!~l!N#F͞*y!N#F5e$!Bla:pilotͼl!N#FFyLl!-!N#F>Ni`!~#fo "t!:t:t#ڦ*t~;ʦ*t~|ʦ:t2t:t2tq*t#!:t:t#l*t:t2t:t2t6qa:$$$.suba:$$$.subͼl!z9:t,!!!͍^y2t:t,!!!B!z!N#F>Nyw!!N#F!{J!!z:tOG/Xl-+=l!9!~#fo"ly!*ly͸ i`"ly!6+2t2t!*ly͸ i`"ly!~*t!͙l!u!ͮJyª!s!ͮJy!6+ê!q!ͮJy"!6-ê!͙yA!͞Gi`" tÎ!~$a!s͞Gi`" tÎ!~@€!͞G 2 t2!tÎ!i`" t!~+¨*t* t "tê! t:t2t:t#2têͼl*hs""t*Xo))*hs :"t:#t*"tN#FͣA*"t##N#FͣA*"t####""t2Xo2Yoll!~#fo"ly*ly1y2$t*ly~A*ly~,A*ly#"ly&*ly~P*ly#"ly*ly1y2%t!͡ !=͡ :$t 2$t:%t 2%t:%tOG͡ :$tOG͡ ll!~#fo"ly*lyy2't*ly~*ly~,*ly#"lyñ*ly~*ly#"ly*lyy2&t:'tOG:&tOGTgl!hyy !x#v *2t*2t#"2t6v l*0t##"0t l!9!~#fo"ly!~#fo"hy!!-!*hy!/!!YK! 9!"hy*lyͫ!*hyͫ!*lyFyʛ!*hyFl*hy*lÿ́lͼl!~#fo"4t!~#fo"6t*4t~!*4t~ !*4t#~ !*4t#"4t!*6t6l*6t*6t#"6t*4t*4t#"4t~!0123456789abcdefABCDEFͼl!"!N#F;Kll!~#fo"ly!>#\"l*ly"8t!~w#~w!~#ʔ"*8t~ʡ"*8t~,ʡ"*8t#"8ty"!~#"l*8t~ʔ"*8t#"8t!~w#~wo"*ly~"*ly~,"*ly6"*8t0l*ly#"ly"ͼl!~A#~ #!>Z>#:#!~a#~)#!>z>#:#!~-7##~@#C#lͼl!~A#~e#!>Z>##!~a#~#!>z>##!~_##~˜#Û#ll!~#fo"ly*ly~#*ly~w*ly~#*ly6#l*ly#"lyì#l!~#fo"ly*ly~$*ly~ $*ly~ $$l*ly#"ly#*ly6$ >- + : . ^ * # $a:xstatex.pilwritea:xstatex.pilͼl!Q$!W$͊0i`"Bt!Bt~#Ž$!C$!l*hs":t*Xo))*hs ::t:;t%*Bt!A$8*Bt*:tN#F8*Bt!?$8*Bt*:t##N#F8*Bt!=$8*:t####":tÔʢ'*\o*\o####"\o!C:Xyw:Yy#w:Zy#w:[y#w(!!*Oma`y2Ft:Ft_)*Om!l!bs~#p)*bsS3!a':FtOGj1i`"bs!bs~#•)l!!^o##N#F+++N#F*bs3*GtS3!S'Vlͼl! !##N#F+++N#F!ItLi`It 6!ItMDlMorrow Designs Pilot 4.19 (c) 1982 ͼl!)͍ ll!~#fo"ly!~#fo"hy*ly i`"ly*ly> **ly~**hy*hy#"hy*ly*ly#"ly~V**hy6*lyMDl a:pilot ͼl>2et2ft*et~#foC "et*et~#fo"kt!et:kt:lt#*l*kt"gt*gt~*l>2_t>2`t:`t+*gt~OGy +x0+>2_t0+:`tm+l:`t2`t**gt~OGy@+x+*gt*gt#~#fo ###"gt!kt:gt:ht#%+l:_tz+l*gt#~#fo"at*gt*gt#~#fo ###"it*it~OGyª+x+*at*it#~#fo "at!N#F>Ni`!*>N "ct!ct:at:bt#+ll!ct:at2at:bt#2bt*gt#:atw:bt#w*gt###*at "it*it6*it#:ctw:dt#w*it###!N#F͒,>2et2ft*et~#fo? "et*et~#fo "]t*]t~wl a:pilot a:pilot l!~#fo"ly!~#fo"hy*ly~,*ly~;,*hy6 ,!~,>N!,*hyJl*ly~|,*hy6,*hy*ly~*ly#"ly~#fo"ly!~#fo"hy!~#fo"jy*hy*ly2i`"rt:rt?1:stH1l*jyS3*hy*rt*jy2*jyMDlͼlͦ1i`"tt!tt~#„1l!N#F!N#F*tt2*ttMDlͼl2wt2xt>2vt:vt1:vtOG!fht ~#fo}1:vtOG!fht "wt1*wtMDl:vt2vtõ12r^2a?2w2l!~#fo"ly!~#fo"hy*hy~OG!2×l!!*ly͍^i`"yt*ytMDl!!*lya`i`"yt:yt‚2:ztœ2!!*ly͍^i`"yt!!{t##N#F+++N#F*yt͸NV2!!*lya`i`"ytV2!"ytV2l!9!~#fo"ly!~#fo"hy!~#fo"jy*ly :hyw:iy#w*ly w#w*ly w#w*ly *jy~rG3J3ywx#wll!~#fo"ly*ly!p:*ly N#F^*ly ~w#~w*ly ~#fo}3*ly ~#fo|3*ly N#F<*ly ~w#~w3l*ly w#w*ly ~w#~w3l!9!~#fo"ly! ~#fo"hy*ly ~#fo}@'4l*ly!p:*ly w#w*ly*ly ~#~*hy!##N#F+++N#F*ly N#F͸Nx4l!hy~#ª4*ly !~#~#~#~c5:hy·4:iy4*ly !ͪhc52t2t2t2t!*ly N#F́0x45!2t2t;*ly ~#fo}@o|g}l92t2t:t:tl9*t!fht ~#fo}@o|g}9*t!fht !p:9*ly *ly ~#fo}ʋ9Î9*ly N#F*ly N#FKRywx#w*ly*ly ~#~*ly ~w#~w+:*ly ~9#~T:*ly ~w_:*t#"t!9*ly *ly ~#fo#MDx2Xy2Yyx2[yy2Zy!Xyͪh*lyN#F*ly~w#~w~OGyOGl*ly ~ w*ly w#wll!~#fo"ly!~#fo"hy*hy ~#fo}ʫ:*hy ~#fo} ʳ:*lyMDl*hy ~#:*hy;*hy~#fo*hy yOx#Gi`"t!t~#,;*t*hy N#F*hy N#F/X!ty;x#,;*hy ~ wl*hy :t2Xy2Yy:t2[y:t2Zy!Xyͪh*hy*hy ~#~*hy *hy ~#fo}ʄ;Ç;ywx#w:lyš;:my;*hyN#F*hy~w#~w:lyw*hy ~w#~w*lyMDll!9!~#fo"ly*ly ~#-<*ly ~#fo}V<*ly*ly !t*ly ~#fo }| w #w;!*ly N#FqNx<*ly #~wç<*ly*ly !!ZM-*ly~OG!a MD! MDU-*ly~OGyw*ly#"ly-ll!~#fo"ly!N#F 0!~#fo~A-!~#fo>Z-!~#fo~a-!~#fo>z-!~#fo#~:-*ly!~#fo~OG! }!~w#~w-*ly6*ly 6!~#fo~".!?! *ly ?Gl! ! *ly ?G>2mt:mt҉.!~#fo~*§.!?!:mtOG}o|g*ly :mtOG ?G!~w#~w!~#fo~.D/!~w#~wD/!~#fo~..!~w#~wÉ.!~#fo~.l*ly :mtOG !~#fo~a/!~#fo>z/!~#fo~OG!A MD! MD)/!~#fo~OGyw!~w#~w:mt2mt=.>2mt:mta/!~#fo~d/ll!~#fo~*ž/!?!:mtOG}o|g*ly :mtOG ?Gl*ly :mtOG !~#fo~a/!~#fo>z/!~#fo~OG!A MD! MD/!~#fo~OGyw!~w#~w:mt2mtI/ͼl!~#fo~~0!~#fo!~#fo~a^0!~#fo>z^0!~#fo~OG!A MD! MDk0!~#fo~OGyw!~w#~w0lͼlll!~#fo"ly!~#fo"hyͦ1i`"pt!pt~#º0l*hy*ly2i`"nt:nt0:ot0l*hy*nt*pt2*ptMDll!~2t2t!t!j!t!2Xy2Yy~2Zy#~2[y!XyCl*ly !tXyi!Xy!ͪh~#~#~#~*lyMDll!~#fo"ly*ly ~w#~w*ly ~w#~w!!t##N#F+++N#F*ly3ll!~#fo"ly*ly Xyill!~#fo"ly*ly"jy:t2t:t2t6*t*t#"t~OGyOG"6!tͷ8i`"hy:hy46:iyZ6:hy D6:iyZ6*jy*jy#"jy:hyw5*jy6:hyl6:iy‡6!ly:jy~6:ky#‡6Ì6*lyMDll!~#fo"ly!~#fo"hy!~#fo"jy!:lyw:my#w:hy2hy:iy2iy!hy>#Y7!*jy ~w#~w+7*jyN#F*jy~w#~w~OGyOG!7*jyͷ8ywx#w+~27#~Y7!N#F!~w#~w!~ 6!~#fo6!~q7#~7!!ly †7 #7Ô7*lyMDll!~#fo"ly!t*ly8:t2t:t2t7*t*t#"t6 7!t! p:*t}@o|g}8!t!p:ll!~#fo"ly!~#fo"hy*ly*ly#"ly~2jy2ky!jy~#i8*hy ~w#~w+l8*hyN#F*hy~w#~w:jyw8l*hy*jy}ogp::jy Œ8:ky8*hy ~#fo}@o|g}8*hy!p:8l!~#fo"ly*ly ~#fo}8*ly ~#fo}08l*ly ~#9*ly!~#fo"hy*ly*hyfhi`"ly*ly͗@i`"hy*hy"jy!jy~#>=l*ly:ly2ly:my2my}i=*jy*jy#"jy6>=*hyMDll!~#fo"ly!~#fo"hy!ly~#ž=*hy͗@l:ly2ly:my2my*hys@i`"t*ly:t=:t#=*ly MDl*ly:t:t#?L@i`"t2t2t*t"t*ly~#fo"t*t##~#fo"t*t~#fo))*t !lyy0>x#h>*t"t*t"t*t*t~#fo "tå>*t"t*t##~#fo"t>*ly~#fo))*ly !ty…>x#¥>*t"t*t"t*t*t~#fo "t!t:t´>:t#S>!t:t:t#>*hy͗@i`"t!t~#?l!t~#[?*t##*t##~#~ i`~#fo"t*ly*t  #[?*ly>>#G?*ly~#fo)) *ly *tJ*ly ͣA*tMDl!t~#?*ly!t  #?*t##*t##~#~ i`~#fo"t*t*ly  #*ly>>#7@*ly~#fo)) *ly *t####J7@*ly:t:t#@@*t))*ly *ly~#fo!tyOx#Gywx#w*ly:tw:t#w*t))*ly ͣA*ly MDl*t"ly?*ly MDlͼl!t~#k@!t"t*t"t2t2t*tMDll!~#fo"ly*ly !0h#MDll!~#fo"ly*lys@i`"tL@i`"t*t##~#fo"t*t!t  #A*t!t @ #CA*t##*t##~#~rA*u#~a%E*u#>z%E*u#~OG! MD-E*u#~OGyX6ExAE*u##"u!u:u:u#҇E*u~arE*u>zrE*u~OG! MDyE*u~OGy2u!u:uҙE:uLF*u#"uF:u0'F!u>9'F!~#fo!~#foXyi!Xy! #~2`y2ay~2cy+~2by!`ỳk2`y2ay:u2by2cy!`yͪh>2by2cy2ay2`y!`yͪh~#~#~#~F:ua8F!u>zIF:uAڇE!u>ZڇE!~#fo!~#foXyi!Xy! #~2`y2ay~2cy+~2by!`ỳk2`y2ay:u2by2cy!`yͪh>2by2cy2ay2`y!`yͪh~#~#~#~*u#"uAE!u~#G!~#fo!~#foXyi!Xy"l~#~#~#~*u!yOx#G!~#~,G!N#F H*ly~ H2u2u*ly~0H*ly>9H*uMD)) )"u*u*ly~OG! "u*ly#"lyG*ly#"lyìG*uMDlͼl2u2u!~#fow#w! ~#~QH! >$>#WHl! > >#xH! ~#fo/ }2uÈH! ~#fo6 }2u!~#fo"u!~#fo!~#fo "u*u~ ʼH*u~ H*u#"uêH*u~-H>2u2u*u~-H*u~+H*u#"u! ~I#~ly>o>g"ly!#~MM!!Xyi!Xy"l~#~#~#~*hy*hy#"hy6-!Xyi!Xy:my2`y2ay:my2cy:ly2by!`y͓j~2u#~2u#~2u#~2u!u~###M*ly!u##N#F+++N#F*hyL*hy "hy!Xyi!Xy:my2`y2ay:my2cy:ly2by!`yj>02by2cy2ay2`y!`yͪh##~2u!u>9N:u'2u*hy*hy#"hy:uw*hy!yOx#Gll!~#fo"ly*ly~^N*ly#"lyLN*ly!yOx#Glͼl!!u##N#F+++N#F!N#F͸NxNllhO9ONOͼl!N#F`i`"u!u~#Nl*u ~DNl! ~#foMD!N×l!~2u#~2u#~2u#~2u*u#:uw:u#w:u#w:u#w!~#foMDl*u#Xyi!Xy!ͪh~2u#~2u#~2u#~2uO*u M_x2Xy2Yyx2[yy2Zy!Xy!ͪh~2u#~2u#~2u#~2uOl: can't write : can't read ͼl!"9v!";v:2?v2@v*?v*;v͜e!?v~#*P*9v*9v#"9v*;v*;v#";v~:?v2?v:@v2@vO*9v*9v#"9v6!u"3v*3v*3v##"3vOywx#w!"9v*9v~~P*9v~P*9v> Q*9v~PQ*3vw#w!5v~#ʙQ!^!!*5va`i`"=v!=v~#ʙQ*5vf*5v!/X! !O!/X!v]ÙQ*9v~}Q*9v~<Q*9v~*t"t*t##~#fo"t@!t:t$A:t#A!2Wi`"t!t~#„Al*t!t  #*t*t~#fo)) "t*t:tw:t#w*t"t*t####MDl*t> w>#w*t####ͣA*t"tAl!~#fo"ly!ly~#½Al:ly2ly:my2myL@i`"t!ly:t:t#JB*t##:ly:my#JB*ly~#fo))*ly *t##yBx#ŠB*ly*t##~#fo  #*ly *t##~#fo##~#~ÞB*t##:t:t#{B!ly:t:t#A*t##:ly:my#A*t##~#fo"tA*ly *t##~#~*t~#fo))*t !lyy»Bx#B*t*ly  #*t##*ly ~#~B*t##:lyw:my#w*t"tll!~#fo"ly>2u:uC:uOG!fht ~#fo:uOG!fht yOx#Gi`"u!u~#C:uOG!fht ~#fo}C:uOG!fht ~#C*u:uOG!fht N#F:uOG!fht N#F/XC*lyv]l:u2uCͼl! !u!!N#FD!uXyilͼl2u2u!~#fow#w#w#w! ~#~ED! >$>#KDl! > >#lD! ~#fo/ }2u|D! ~#fo6 }2u!~#fo"u!~#fo!~#fo "u*u~ ʰD*u~ ºD*u#"uÞD*u~-D>2u2u*u~-D*u~+D*u#"u! ~D#~AE*u~0AEMI*u~0MI*u#~a1I*u#>z1I*u#~OG! MD9I*u#~OGyXBIxMI*u##"u!u:u:u#ғI*u~a~I*u>z~I*u~OG! MDÅI*u~OGy2u!u:uҥI:uLIJ*u#"uIJ:u0I!u>9I!~#fo!~#foN#F! N#Ffh:uOG  }|?J:uaI!u>z J:uAړI!u>ZړI!~#fo!~#foN#F! N#Ffh:uOG  }|*u#"uMI!u~#uJ!~#fo!~#fo~#fo>o>g}|*u!yOx#G!~#~қJ!N#FëJ*u!yOx#Gll!~#fo"ly!~#fo"hy*ly*hy Jl*ly#"ly*hy#"hyJ*ly~Jll!~#fo"ly!~#fo"hy!~#fo"jy*jy:jy2jy:ky2ky}VK*ly*ly#"ly*hy*hy#"hy~Kll!~#fo"hy!"ly*ly~#ʦK*ly~#fo"jy*jy~ʳK*hy*hy#"hy*jy~*jy#"jyÁK*hy6*hyMDl*ly##"lynKl!~#fo"ly!~#fo"hy*hy~K*hy~OG:lyK:myLll*hy#"hyKl!~#fo"ly!~#fo"hy!~#fo"jy:iyfL*hy>o>g"hy:myfL*ly>o>g"ly*jy*jy#"jy6-*ly*hy0h"u!u~#ʗL*hy*u*jy L*jy "jy*ly*hyKh0 }2u!u>9ҼL:u'2u*jy*jy#"jy:uw*jy!yOx#Gll! ~#fo"ly!~#fo"hy:myMM*> gQ*;v~UQgQ*3v*3v##"3v:9vw::v#w}Q*9v~>qQ*;v"7vwQ*;v#";vQ*;v"5v*;v"9v*9v> YP*9v~YP*9v#"9v}Q!7v~#R!^!!*7v͍^i`"=v:=vQ:>vR*7vf*7v!/X!!O!/X!v]!u*3vu}o|g!0hBlRRRmSCSTRLRPRD-Tͼl!9!N#F`i`"Kv!~#wR!Kv~#}Rl*Kv~OG!'R×l!~#fo"Av!~#fo!~#fo "Ev*Kv ~#RRy2Gv*Kv ~OG!3R×ll!N#F!N#F*Kv3Tll!Ev:Av:Bv#WS! y2Hv:Gv9S:HvOGy3SxLSWS*Av*Av#"Av:HvwS:Hv 9SS*Av!yOx#GlWS!6!! ! ! !"Cv!~OG!yx#ҴS!~OGûS!N#Fy2Hv:HvS*Cv~OGySxT>2Hv!Ev:Av:Bv#WS:HvWS*Av*Av#"Av6 WS*Av*Av#"Av*Cv*Cv#"Cv~:Hv2HvÿSlͼl!z9ͺ]!~#fo"Ov!~#fo"Uv!~#fo "[v!~#fo#Xyi!Xy>2by2cy2ay2`y!`yh##~2Tv!~#fo ~#T!Uv~#aV!N#F3a:Uvր:VvڃU:TvƒU!"Yv*Ov! *[v!! yUaV2Wv2Xv X>2evçX>2evçX!~#foMDll!av:_v:`v#GY*_v~OG!#X×l*_v!yOx#Gl!:_vjY:`v#zY*_v ~ ʋY! :evOG *_v*_v#"_v~OG:evOG *Y[ [[[ [ͼl!9!~#fo"jv!~#fo"pv!~#fo "tv!~#fo#Xyi!Xy>2by2cy2ay2`y!`yh##~2ov!~#fo ~#ʇZ!pv~#c]!N#F3a:pvր:qvZ:ovZ!"rv*jv! *tv!" y [l!y:ovOG "lv!"hv*pv:pv2pv:qv2qv}c]*jv*jv#"jv~2nv:nvOG!Y×l!z! *tv!! yU[!!!zdfU[*jv*rv "jv!rv:pv2pv:qv#2qv!~#fo#2Xy2Yy:rv2Zy:sv2[y!Xyͪh>2ov3Z!:ovOG}o|g"rv!pv:rv:sv#~[*rvMDÃ[*pvMDi`"rv*rv*jv!z:ovOG ͦf*tv!" y [l!pv~#\!hv:lv:mv#[\*lv*lv#"lv6 *lv*lv#"lv:nvwú[!hv:lv:mv#ڜZ!lv:hv:iv#\\i`"vv!vv~#1\*hv"lv*lv!y:ovOG yOxGi`"rv!N#F3a:rvր:svқ\!! *tv!! y\!!!df\!"rv!y! *tv!" y]l*rv!y:ovOG !:ovOG ͦf!! *tv!"#w#w#w*v !~#~*vv}o|g!,0hMDlͼl!~#fo#~2v#~2v#~2v#~2v!~#fo "v*v! !v!Hk##~*v" !v!Hk##~*v# !v!Hk##~lͼl!vywx#w!Xy~#~a!~#fo ~a!Xy~#~bl!~,w#~wa!~#foMDlRDR:PTP:CON:LST:ͼl!9!~#Qb!~#fo~Qb!~#Wbl!N#Ffi`"v:v :v{bl!"v!~#fo"v*v~b*v~w*v*v~ab*v>zb*v~OG! MDb*v~OGyw*v#"v*v#"vÍb*v6!!}|:vc:v7c!~#fo###~:7c!#b!N#Fgyʖc>L2v2vc!~#fo 6D!~#fo "v*v6!~#fo#~:&d!~#fo~2v2v:vA:v_d!v>P>#ed_d!b!N#Fgyʹc>C2v2vc!b!N#Fgyc>P2v2vc!b!N#Fgyd>T2v2v!~#fo :vwl!~#fo 6l*v#"v2v2v:v:vd!~#fo~ʃd!~#fo~.›dÃdl*v*v }!~w#~w&d*v*v#"v6 *v#"v4d*v*v#"v!N#F!~w#~w~Ñd!~#fo~d!~#fo~.d!~w#~wd!~#fo~. e!!"Mv*Mv"Qv!Uv~#2TvèT!~#fo#2Xy2Yy:Wv2Zy:Xv2[y!Xyͪh*Ov!yOx#Gl*Qv~2Sv:SvOGy‹Vx§V2TvtV*Qv#"Qv*Wv#"Wv:Sv U:Sv U*Ov*Ov#"Ov:Svw:Uv2Uv:Vv2Vv Uͼl!9!!N#F(by Wl!! y#Wx,Wllͼl!9!:]vw:^v#w!*]v!~#fo }|!:w:#w!!}|!w>#w!!]vyOx#G!yx#ҨWl!!  #W!!  #W!!  #W!~#fo"]v!~#foMDllmXmXXYTYLYPXCXD$YZY GYYͼlͺ]!~#YX!N#F`i`"fv!fv~#_Xl*fv~OG!W×l*fv ~OG! X×ll!N#F!N#F*fvYl>2ev!~#fo"_v!~#fo!~#fo "av*fv ~#*Y!av:_v:`v#GY*_v*_v#"_v~OG:evOG y]l!y"lv>2ov!~#fo#2Xy2Yy:rv2Zy:sv2[y!Xyͪh!vv~#[*lv*lv#"lv6 !pv~#[\*jv!yOx#Glͼl!w#w!~#~]!N#F^!~w#~wÅ]! lͼl! y]2xv2yvl*xv#"xv:xv:yv^! y]x^! lͼl!N#F`i`"zv!zv~#*^l*zv ~Di^*zv~i^*zv ! i`"|v:}v^!|v>>#^*zv 6!~#foMDl!>w>#wi^ͼl!~#ʶ^!~¨^#~ʶ^!>w#wͯai`"~v!~v~#^l*~v!N#F(by^l*~v ~D#_*~v ! *~v ! x#_l*~v 6!N#F!N#F!N#Fa`lͼl!N#F!# yj_xy_!vXyil!~#fo! MD 2Zy2[y2Yy2Xy!Xy!~#fo" MD 2by2cy2ay2`y!`y!jCl!~#fo# MD 2by2cy2ay2`y!`y!jCl>2`y2ay>2cy>2by!`ỳklͼl!#~*`!~#~0`l!N#F!,fhv "v*v ~Y`l*vMDlͼl!~#ʊ`!~|`#~ʊ`!>w#wͯai`"v!v~#¡`l*v!N#F(by½`l*v ~D`*v ! x`*v 6l*v!~*v#wD~w#~w2v2v:v:vZe!~#fo~OG! MDf!~#fo~OGyw!~w#~wßelͼl!!~#~!~#fo~Lf!~w#~w/f!~#fo!yOx#Glͼl!N#F!~w#~w}ʣf!N#F!~w#~w!~gflͼl!N#F!~w#~w}f!N#F!~w#~w!N#F!~w#~w~éf!~#foMDlͼl!~#fo!~#fo Agl!~w#~w!~w#~wg!~#fo~$gl&}!!9l!9~w#~w#~w#~w+MD!9 _ #qg{ !94qg! 9~g+w>#w! 9N#FxgO>GgggO>G! 9q#pm! 9~h+w>#w! 9N#FxhO>Ggg%hO>G! 9q#pm! 9N#Fgg! 9q#pm! 9N#Fgg! 9q#pm!! 9~+ʟh~҅h! 9N#F ! 9~w#~w! 9~w+~wlh!9q#pm!9N#F!9~#fo ## # +++ #m!9N#F!9~#fo  # # #m~++q!9N#F#q#pV2.1: copyright (c) 1979 by Whitesmiths, Ltd.2PnyCCC#~#~#~#~#~#~#~!9MD!9~#~#~#~ !9~w#~w#~w#~w#~w#~w#~w#~w!9MD! 9  # # #@i!9MD! 9  # # #!94@i!9!9m#~#~+++~#~#~i#>#>+++>#~#~#~ #~{i>#># >#ͤi!9MD!9~#foi! 9MD!9~#foii!9N#F!9iñiͤi!9MD!9~#foi! 9MD!9~#foii!9N#F!9iñiͤi! 9MD!9~#fo#ͺi!9MD!9~#fo#ͺii!9N#Fkb9iñiͤiØj!9~j/<kmO!9~#fo##~w#~w+++~w#~w jm!9~k/#w>+++w>#w!9N#F!9~#fo  # # #m!9N#F!9~#fo ## # +++ #m~#£l#~#foy#·lx#¸l+++~#fo##×l!9!9*ly*jy*hyi`!"hy"jy"ly!9N#F###q#p+h    #{s m!j"g$bX#nyCCC .(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 !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  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* :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:[ ÷: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:ͯ !&6DM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨ɲ*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ͯ 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͈*u1 )  ( q  Insert your CP/M SYSTEM diskette in Drive A, and press [RETURN].$ $MORROW COMBPAUSE COMC RETURN $$$INIT PIL >LOAD COM?MDWORK PIL@ABCDEFGHMICRO PILfIJKLMNOMORROW COMPMOVCPM COMfQRSTUVWOSB COMXPAUSE COMY#PILOT COMqZ[\]^_`abcdefghiPIP COM:jklm RETURN $$$`1?W -(  1::Oɯ=>>@yL>>>7Micro-Decision SETBAUD program Rev. 1.0 $Copyright 1982 Morrow Designs, Inc. xSan Leandro, CA This program is used to change the BAUD rate for the PRINTER/MODEM port on your Micro-Decision. The Micro-Decision is shipped from the factory with the BAUD rate switch inside the machine set at 1200 BAUD. Without changing this switch, you can switch the BAUD rate between 1200 and 300 BAUD by just selecting the rate you want from the menu below. 1 - 300 BAUD R2 - 1200 BAUD Enter the number corresponding to the BAUD rate you want: $ $ $PILOT COMqZ[\]^_`abcdefghiPIP COM:jklmRETURN COMn SETBAUD $$$*3 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 Status : 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*(&jL!*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!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*͠"͠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!)6> !).*)&*)*)&*) 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"Ɂ_>!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: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͐)*)) *)) 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 *) >*) 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#WU 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\:=ͧ!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>}|ͧÂCOPYRIGHT (C) 1978, DIGITAL RESEARCH (!"#$%&'(  o&)Da{__> k> kr~k#ÂO****!*$*'! ">2!4:(cN͙>2:)!4R!^!*FN͡yR*DMͩ2:7!q͂] r<2:H͹Kͱ:)R*":ͻ!q͂] r1!͂:] \<¦!}Ý2|\ ¬! DMͩ\(ÿ!}Ý!}] (AͨA2 Ar!͂] r͎2!͂!!}] ʝACͨ(A2]A!N}] r͎͙ͩ͡ͱ: G:†¸!6!͂(>͎r!}!}Ý!!Q}(SYSGEN VER 2.0 MD1.2SOURCE DRIVE NAME (OR RETURN TO SKIP)SOURCE ON ], THEN TYPE RETURNDESTINATION DRIVE NAME (OR RETURN TO REBOOT)DESTINATION ON , THEN TYPE RETURNPERMANENT ERROR, TYPE RETURN TO IGNOREFUNCTION COMPLETEINVALID DRIVE NAME (USE A, B, C, D, OR E)NO SOURCE FILE ON DISKSOURCE FILE INCOMPLET* * TERMINAL CONTROL DATA FOR VARIOUS TERMINALS * Morrow 20 LEVEL = 3 CURSOR = ESC = C+32 R+32 CLR = ^Z Morrow 50 (Freedom) LEVEL = 3 CLR = ESC * CURSOR = ESC = R+32 C+32 ADM 3A or 5 LEVEL = 1 CURSOR = ESC = R+32 C+32 CLR = ^Z LO = HI = ADM 22 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z ADM 31 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z Heath H19 LEVEL = 1 CURSOR = ESC Y R+32 C+32 HOME = ESC H CLR = ESC E LEFT = ESC D RIGHT = ESC C UP = ESC A LO = HI = Visual 200 LEVEL = 2 CURSOR = ESC Y R+32 C+32 HOME = ^A CLR = ^L RIGHT = ^F LEFT = ^G UP = ^Z HI = ESC '3' LO = ESC '4' CEOS = ESC y CEOL = ESC x Soroc 120 LEVEL = 2 CURSOR = ESC = R+32 C+32 CLR = ESC * CEOS = ESC Y CEOL = ESC T Televideo 910 LEVEL = 2 CURSOR = ESC = R+32 C+32 CLR = ESC * CEOS = ESC Y CEOL = ESC T Televideo 912C/920 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ESC * Televideo 925/950 LEVEL = 3 CURSOR = ESC =-!6]:ͧz2~e:~2O! 6*~& 6$>!~_z*~& w!~5Bx:yͧ*v+"vv ~_{ozg 001 $$$$ SUBEWRONG VERSION OF CP/MSINGLE SIDED DISKETTE CANNOT ACCEPT DOUBLE SIDED SYSTEM DOUBLE SIDED DISKETTE CANNOT ACCEPT SINGLE SIDED SYSTEM  R+32 C+32 CLR = ESC * ADDS Viewpoint LEVEL = 2 CURSOR = ESC Y R+32 C+32 HOME ESC Y SP SP CLR = ^L RIGHT = ^F UP = ^Z HI = ^O ESC '0' A LO = ^N CEOS = ESC k CEOL = ESC K ADDS Viewpoint 3A+ LEVEL = 1 CURSOR = ESC = R+32 C+32 CLR = ^Z LO = HI = ACT 5A LEVEL 2 CURSOR = ^T R+0 C+0 HOME = ^] CLR = ^L RIGHT = ^X UP = ^Z CEOS ESC K CEOL ESC I HI = ESC B LO = ESC C Qume 102 LEVEL = 3 CURSOR = ESC = R+32 C+32 CLR = ^Z * Honeywell * LEVEL = 3 * CURSOR = ESC f C+32 R+32 * HOME = ESC H * CLR = ESC ` * RIGHT = ESC C * UP = ESC A * INSLINE = ESC [ L * INSCHAR = ESC [ I SP ESC [ J ^H * DELLINE = ESC [ M * DELCHAR = ESC [ P * HI = ESC '3' * LO = ESC '4' * CEOS = ESC J * CEOL = ESC K ANSI LEVEL = 1 CURSOR = ESC [ R+1 ; C+1 H ASCII HOME = ESC [ H CLR = ESC [ H ESC [ J HI = LO = CEOS = ESC [ J CEOL = ESC [ K LEFT = ESC [ D RIGHT = ESC [ C UP = ESC [ A VT52 LEVEL = 1 HOME = ESC H CLR = ESC H ESC J RIGHT = ESIGHT = ^P UP = ~ ^L HI = ~ ^_ LO = ~ ^Y CEOS = ~ ^X CEOL = ~ ^O None of the above LEVEL = 0 CURSOR = ESC = R+32 C+32 N CUR:20 ,18 A: M: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , Jn:*ACTION M: 1 , JY:*CONTROL M: 2 , JY:*DIR M: 3 , JY:*ERA M: 4 , JY:*REN M: 5 , JY:*STAT M: 6 , JY:*TYPE M: 7 , JY:*PIP J:*SYSGEN *CONTROL R: definition of control keys CLRS: T: There are four control codes which have special meaning in CP/M. To T: enter a control code, hold the [CTRL] key down and press the appropriate T: letter key. The control codes that are used by CP/M, and their meanings T: are as follows: T: T:{CONTROL-C}- This is used in CP/M to re-initialize the system. Anytime T: you change diskettes in a drive, you should type control-C so that the T: operating system will know that a diskette was changed. T: T:{CONTROL-P}- This code is used to tell CP/M that characters sent to the T: screen should also be sent to the printer. This will remain in effect T: until you press control-P a second time to turn off the routing to the T: printer, or until you reset the system. T: T:{CONTROL-S}- This isC C LEFT = ESC D UP = ESC A CURSOR = ESC Y R+32 C+32 HI = LO = VT100 LEVEL = 2 CURSOR = ESC [ R+1 ; C+1 H ASCII HOME = ESC [ H CLR = ESC [ H ESC [ J LO = ESC [ '0' m HI = ESC [ '1' m CEOS = ESC [ J CEOL = ESC [ K LEFT = ESC [ D RIGHT = ESC [ C UP = ESC [ A Wyse LEVEL = 3 CLR = ^Z CURSOR = ESC = R+32 C+32 Teleray LEVEL = 3 HOME = ESC H CLR ?= ^L CEOS = ESC J CEOL = ESC K RIGHT = ESC C UP = ESC A CURSOR = ESC Y R+32 C+32 INSLINE = ESC L INSCHAR = ESC P DELLINE = ESC M DELCHAR = ESC Q HI = ESC R @ LO = ESC R B IBM 3101 LEVEL = 1 HOME = ESC H CLR 0= ESC L LEFT = ESC D RIGHT = ESC C UP = ESC A CURSOR = ESC Y R+32 C+32 HI = LO = Hazeltine 1420/1500 LEVEL = 2 CURSOR = ~ ^Q C+0 R+0 HOME = ~ ^R CLR = ~ ^\ RIGHT = ^P UP = ~ ^L HI = ~ ^_ LO = ~ ^Y CEOS = ~ ^X CEOL = ~ ^O Hazeltine Esprit LEVEL = 2 CURSOR = ~ ^Q C+0 R+0 HOME = ~ ^R CLR = ~ ^\ RR:Morrow Designs Micro-Menu system - Rev 2.2 R: Module - TUTORIAL.PIL R: Copyright 1982, 1983 Morrow Designs, Inc. R: All Rights Reserved R: Written by Harrison Schreppel for Morrow Designs R: ESC:*RETURN *BEGIN CLRS: T:{ An Overview of CP/M} LF:1 T: This is the Micro Menus' on line CP/M tutorial. It is not meant T:to be a thorough presentation on using CP/M, but is intended to be T:a "quick reference" guide for people who are just learning to use T:CP/M. For additional information or variations on any of the T:commands shown, just enter the number corresponding to the command. T:{ T: 1 Use of control keys in CP/M T: 2 DIR - Display a list of files on a diskette T: 3 ERA - Erase a file or series of files from a diskette T: 4 REN - Rename a file T: 5 STAT - Report system status T: 6 TYPE - Display a file on the screen T: 7 PIP - Move or copy files T: 8 SYSGEN - Put CP/M on a diskette T: ESC Return to Main Menu T: T: Pick a subject:} INMAX:1 *ACTIO used to pause or "freeze" the characters that are T: scrolling by on the screen. Pressing any other character will resume T: output (scrolling) to the screen. T: T:{CONTROL-X}- This will erase a command line that has been entered at the T: CP/M prompt " A> ." T: T: See your CP/M manual for additional control codes. U:*PAUSE J:*BEGIN *DIR R: description of directory command CLRS: T: d{The DIR Command} T: T:This command displays a list of all files on a diskette. Its format is: T: {DIR x:} T:Where x: is an optional drive designator (A:, B:, etc.). If no disk drive T:is specified, then CP/M will give you a listing of the files on the drive T:that is currently logged. T: T:{EXAMPLE} To get a listing of all the files on drive B, you would type: T: V{DIR B:} T: U:*PAUSE J:*BEGIN *ERA R: description of the ERA command CLRS: T: {The ERA Command} T: T:This command is used to ed} T: T:This command may be used to report the size of a file, or the amount of space T:remaining on a diskette. Some examples of its usage are given below: T: T: {STAT A:} - Reports space remaining on drive A. T: {STAT FILENAME} - Reports the size of the file FILENAME. T: {STAT B:FILENAME} - Reports the size of the file FILENAME on drive B. T: {STAT C:*.*} K- Reports the size of all files on drive C. T: T:The characters *.* are called wildcards, meaning that they will match any T:character name. There are many forms of wildcards, all of which are fully T:covered in the CP/M reference manual. T: U:*PAUSE J:*BEGIN *TYPE R: description of the TYPE command CLRS: T: {The TYPE Command} T: T:The TYPE command is used in CP/M to display a file on the screen. To use the T:TYPE command, enter the following: T: {TYPE FILENAME} T:This will cause the file to be sent to the screen of the terminal. When the T:file is being disE} - Makes a duplicate copy on drive C, of the T: 1file "FILENAME" on drive B, calling it T: &"NEWNAME" on drive C. T: T: {PIP B:=A:*.*} - Copies all files from drive A to drive B. T: T:Your CP/M reference manual has more information on the PIP command, including T:the use of "wildcards" when copying files. T: U:*PAUSE J:*BEGIN *SYSGEN R: a description of SYSGEN CLRS: T: {The SYSGEN Command} T: T:This command is used to place a copy of CP/M in its reserved place on a T:diskette. The use of this command is fully explained in the Micro Decision T:Users Guide. Anytime you want to create a diskette that can be used in drive T:A of your Micro Decision, you must use SYSGEN to place a copy of CP/M on the T:diskette first. This is because the CP/M operating system always expects to T:find a copy of itself on the diskette in drive A. T: U:*PAUSE J:*BEGIN =9 *PAUSE rase files from a diskette. The format is: T: 6{ERA FILENAME} T:Where FILENAME is any valid CP/M filename. The filename may be prefixed T:by a drive designator (i.e. ERA B:FILENAME ). If no designator is given T:then the currently logged drive will be used. T: T:{EXAMPLE} To erase a file called "LETTER.TXT" from drive B, you would T:type: T: `{ERA B:LETTER.TXT} T: U:*PAUSE J:*BEGIN *REN R: description of the REN command CLRS: T: {The REN Command} T: T:You may change the name that you have given to a file with the REN command. T:To use the REN command, you would type: T: {REN NEWNAME=OLDNAME} T:{EXAMPLE} To change the name of the file "LETTER.TXT" on drive B to the new T:name "MEMO.TXT," you would type: T: m{REN B:MEMO.TXT=B:LETTER.TXT} T: U:*PAUSE J:*BEGIN *STAT R: description of the STAT command CLRS: T: *{The STAT Commanplayed, you may press CONTROL-S to stop the scrolling. To T:continue scrolling, press any other character. By preceding the TYPE command T:with a CONTROL-P, the output will also be sent to the printer. T: T:{EXAMPLE} To view a file called "LETTER.TXT" on drive B, enter: T: {TYPE B:LETTER.TXT} T:This command will only work to display text files. Displaying non-text files T:such as files ending in "COM," may cause your terminal to do strange things. T: U:*PAUSE J:*BEGIN *PIP R: PIP and it's uses CLRS: T: {The PIP Command} T: T:This command is used to move files around. It can be used to move files from T:one diskette to another, from a diskette to the screen, or from a diskette to T:the printer. There are many different ways to use PIP; the following examples T:illustrate the most common forms: T: T: {PIP B:=A:FILENAME} - Makes a duplicate copy on drive B, of the file T: 7"FILENAME" on drive A. T: T: {PIP C:NEWNAME=B:FILENAM CUR:0,23 TNR: Press{RETURN}to continue INMAX:1 A: E: *RETURN CLRS: T:{Returning to main menu, Please stand by... CH:MICRO.PIL 1!~#~ (2KA* O|*<~c( *C^#V>>(#^#V##^#VB8j! 6#s#rs#r ^#V! *A^#VyO >'w#>w#[6#6E  No drive specified.$Incorrect drive specified, allowable drives are: B, C, D, or E.$Drive A is now a XEROX drive.$Wrong version of CP/M. This version of XER only works with CP/M Vers 2.2 Rev 1.X, or 2.X$Too many foreign drives are defined. Push reset to clear all foreign drives.$     RW 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=2% ͋*-"*$$$ SUBq:(=2(N *$*& w*$#"$*&#"&' !"N*M^7 !)6:!)ھ *N*DM͆ 2*ʭ :*ʗ ͯ *N"P*6:2)÷ *N"N!) $@BA$! A "!$""