IMD 1.18: 3/03/2022 19:56:14 JET80/W20FT 800k systemdisk LGN BIOSKRNL REL : BIOSKRNL Z80 : BNKBDOS3 SPR : CPM3 SYS BOOT REL : BOOT Z80 : CALLVERS ASM : CCP COM CHARIO REL : CHARIO Z80 : CNTRLR REL : COPYSYS COM DATE COM : DEVICE COM : DIR COM : SERIE COM WBU DOC : DIT COM : HIT COM : DUMP ASM DUMP COM : ECHOVERS ASM : ED COM : ERASE COM ERRORS COM : EXTMEMA REL : EXTMEMF REL : EXTMEMX REL FASTCOPY COM : FDRIVES ASM : FDRIVES REL : GENCOM COM GENCPM COM : GENCPM DAT : GENFBIOS SUB : GENWBIOS SUB GET COM : HELP COM : HELP HLP : HEXCOM COM HIST UTL : WDRIVES ASM : INITDIR COM : IOS Z80 IOSETUP COM : LIB COM : LINK COM : MAC COM PARK COM : PATCH COM : PIP COM : WBU COM PUT COM : RANDOM ASM : RENAME COM : RESBDOS3 SPR RMAC COM : SAVE COM : SCB ASM : SCB REL SET COM : SETDEF COM : SHOW COM : SID COM SUBMIT COM : TRACE UTL : TRACK0A : TRACK0X TYPE COM : WDRIVES PRN : WDRIVES REL : XREF COM FORMATER COM : DIRLBL RSX : HITDIT DOC : WDRIVES SYM ( @@ CRT LPT @CEN @GRAPH LPT1 LPT2 1  ͍ %͍͍ʢ͏͕!~# 4͕ ͍:g:s:_g:s!]~$o#~B̩1ɷW|g ͏͕%z͍͍ ͍vCPM3 SYS CPMLDR error: failed to open CPM3.SYS $ CPMLDR error: failed to read CPM3.SYS $ CP/M V3.0 Loader Copyright (C) 1982, Digital Research $021182" yڥ2 2 : 2 {2 !" " 9"@1!N y2K!dڛ_^#V*    ; A G :ž y! 4 5~yµ5 6y ’ ͒: ! OͻMD2 > BDOS ERR: $Select$Perm.$ v{_zW{_zW )8# ? w#JJ |^#V###" ##" ######" !  I* ! I* |! 6ʕ67 * w#w* w#w#w! ^#V#Fͪ' O* &! s#r#p* N#F* ^#V#F* : O}|y* %+* .}|y#* %* DM"  * s#r* s#r#pyoxgkDM* 0 MD" ! * MD$ : O&! N:  yG>O: ʐÇ* ͒ : ʨn` ~#for2 O͚" }: O* 7" 2 " : O: G2 ! w*  * !~2 ~2 : 2 : w: w |g}o' )4: O!3yoxg: O&}* : o$~w{ozg ^#V: ʏ> Û͡" ͳ* ç* r" ! ~#O&E: N/* " y2 ʹ͗ͻͫʛ* X: O~Jyʔx ʍ ʂJÍNJ# h2 G>G:~X*  IOw!x>Fwx2 2 ~: : 6: w2 ~O !>w:ͨ2 4O.5Ϳ: ! S: ͮ: ͛ͳ: < =! wW* M_S -* MD:" : 2 ɯ2 >G=O* ~~w#~2 ~wc~~p2 !" >2 * ~=2 ~2 ͛o>* w!" 2 =2 !" Û͛o͢͢' ͫ~<7 w@ͩ7: " Û: ~ : 2 : ~ * 6: p w#: w: w*@* }D> $* * T : _2 {2 " r" [  ?, d >l [ I6: <!=6 * J " * K : G/O*  * =d ## Ih c c c c c c Õ ç Ø Ý â õ c c ñ c c c c c c c  c } Ñ s c c c  !_!_!!6 6 >"2CG! o(!d |G}2 <<2 >2! !#O: :(y: ( ( 2>2Mx: ɯ2S" Cx> >2*|o&~!!x( >>2C2!> (>w2CCC!y*`i#:|s:1|͛( ~ Ͱ~  [[!R0x͗y{:c / ~w VR F6#͹ 66> :~͸͹ >!| > >NF(90>2~> :|> y~<(><Wy> ~݆ݾ8(>6w4~ ݖw ~~ F8 C"!>!x((:<>> w( H6#~:=_Gn f s:1|͛( ~ Ͱ~͡ >͸~w VF 6#͹ 66>"t/ > !!> dt!d>կNF:!0 ) 0 ~=O 0y\!p\"S!! >}ϋ}ϋ y(ϋ y(ϋ~G#N#(_AP@_@:w:w:wwwG: : ɯɯwwwO F?@CHARIO Z80ABCDEFGHCNTRLR RELIJCOPYSYS COMKDATE COMLMDEVICE COM:NOPQDIR COMrRSTUVWXYSERIE COM+Z[\WBU DOC-]^_DIT COMy`abcdefgHIT COMhijklmnoHIT COMpqrstuvwHIT COMxyz{|}~HIT COM DUMP ASM DUMP COMECHOVERSASMED COMIERASE COMERRORS COM EXTMEMA RELEXTMEMF RELEXTMEMX RELFASTCOPYCOM$FDRIVES ASMkFDRIVES RELGENCOM COMtGENCPM COMGENCPM COM(GENCPM DATGENFBIOSSUBGENWBIOSSUBGET COM3HELP COM8HELP HLPHELP HLPHELP HLPHELP HLPhHEXCOM COM HIST UTL WDRIVES ASMWDRIVES ASMwINITDIR COMINITDIR COMzIOS Z802IOSETUP COM'LIB COM8LINK COM{     MAC COM\PARK COMPATCH COMPIP COMDWBU COMG !"#$PUT COM7%&'(RANDOM ASMV)*+,-.RENAME COM/0RESBDOS3SPR1RMAC COMj2345678SAVE COM9SCB ASM:;SCB REL<SET COMS=>?@ABSETDEF COM CDSHOW COMBEFGHISID COM>JKLMSUBMIT COM*NOPTRACE UTL QTRACK0A &RSTTRACK0X $UVWTYPE COMXYWDRIVES PRNZ[\]^_`aWDRIVES PRNbcdefghiWDRIVES PRNjklmnopqWDRIVES PRNrWDRIVES RELsXREF COMytuvwxyz{FORMATERCOMm|}~DIRLBL RSXHITDIT DOCWDRIVES SYMBNKBIOS3$$$@[ܠTE%hIIZ@TRKPP DD 9.@CNTPГd$45Ua eRDMAFLGOTS$H] ==R?CONSTӒSS41%MR?AUXOOUV`SXM1M.?STTRKPc5DDI?WRITETc45E$ =9=N?AUXISUVcEeD$Y%:?DRTBLSScdU45=Z?TIMГ c5D$a5=ZSIO1IVTe%h%9QYQ5700@  P   1@ ?(  p  aaqaѰaa :6ã` +@j \Wh4 4S 03k" 1Nɼ 1M 4cy@i7 #t3sSpC( n&\hڀ t`)aTv@pKҞ$I1@$`@CXF{Y WXV~P#ʄ ²X\,`Aümf 0cx 8 ͫ`63h 4a# 6b2@@ 0!"j.\DC@t\*9i30p T=f`b@ |Z,iA0 U@iD0 U9jF0 4UK>50·dQd(R)(d8Y@GYAn?17@" ;vr@ nbY[XVh`e"è2PSD;Seޠ+-ͬ`Q^ɖpH ˂@E[@\LhCXu`\$*P0W[Xn QuX{Z?-V͡ Fx,Sjyn eE:N"@+Ht3D!4eK@T\Zf0#F@' [hL62LVh<,Efa >6a^2O2GTT N }TT >E/1sG@|Q0&leElqp eB"`H@A'޴d!?' of $;Ht( !&KCTHeD@&d &0|?ڡ Ej@)pFf7\oha  #* ^ɖ.Al6 }@ 赚~YE@) Lt$D) |t'T@1rZdt'FYLh0$F@)JiB@1zrJtt0'L1zrzt)F)zt"$GP1"dt+*!&GR12bDt`'Ƅ)JrJg"!GC)bJt$)Q@1jbJ|u,F@1 Du&I)* $g&!GL1ttl")U1r\t"&H@1*tx*)%S!Jlj#G@1zzt$"U)jzt )+Fr J*j$ "2rZ4tH !'%ƂrJ*t@ !*F2z*j!!&GD@"r\t8 "&Ƥj"dj8 &'"Drj¢ t$ )")+GC*t( *)%Wr rYtL !'%[2bZJu!!+GE@"j 2b Bank1 DmBk00 Equ 00001000B ; Bank0 --> Bank0 DmBk10 Equ 00010000B ; Bank1 --> Bank0 DmBk01 Equ 00011000B ; Bank0 --> Bank1 Bank1 Equ 00000000B ; Bank1 (64K FOR CPU) Bank0 Equ 00100000B ; Bank0 (48K FOR CPU) Else Dma Equ 0F0h ; Dma BnkMux Equ 0F4h ; Bank-Dma-MULTIPLEXER DmBk11 Equ 00000100b ; Bank1 --> Bank1 DmBk00 Equ 00000000b ; Bank0 --> Bank0 DmBk10 Equ 00000110b ; Bank1 --> Bank0 DmBk01 Equ 00000010b ; Bank0 --> Bank1 Bank1 Equ 00100000b ; Bank1 (64K FOR CPU) Bank0 Equ 00100001b ; Bank0 (48K FOR CPU) Endif CtlQ Equ 'Q'-'@' CtlS Equ 'S'-'@' MbXonXoff Equ 00010000B ; XON/XOFF PROTOCOLL ON. JpOp Equ 0C3H ; Z80 JUMP INSTRUCTION Ccp Equ 100H ; LOAD ADDRESS FOR Ccp Page Cseg ;------------------------------------------------------------; ; Bios Jump Vectors ; ;------------------------------------------------------------; ?Boot: Jp Boot ; ?WBoot: Jp WBoot ; ?ConSt: Jp ConSt ; ?ConIn: Jp ConIn ; ?ConO: Jp ConOut ; ?List: Jp List ; ?AuxO: Jp AuxOut ; ?AuxI: Jp AuxIn ; ?Home: Jp Home ; ?SlDsk: Jp SelDsk ; ?StTrk: Jp SetTrk ; ?StSec: Jp SetSec ; ?StDma: Jp SetDma ; ?Read: Jp Read ; ?Write: Jp Write ; ?ListS: Jp ListSt ; ?ScTrn: Jp SecTrn ; ?ConOs: Jp ConoSt ; ?AuxIs: Jp AuxISt ; ?AuxOs: Jp AuxOSt ; ?DvTbl: Jp DevTbl ; ?DevIn: Jp ?CInit ; IN CHARIO.Z80 ?DrTbl: Jp GetDrv ; ?MltIo: Jp MultIO ; ?Flush: Jp Flush ; ?Mov: Jp ?Move ; ?Tim: Jp Return ; NOT INSTALLED ?BnkSl: Jp BnkSel ; ?StBnk: Jp SetBnk ; ?XMov: Jp ?XMove ; Jp ?UserF ; IN EXTMEM.Z80 Jp Return ; Jp Return ; Nop ; GIVE CORRECT START FOR INT.VECTORS. Page ;------------------------------------------------------------; ; Interrupt Vectors ; ;------------------------------------------------------------; IntVect Equ $ ; INTERRUPT VECTOR ADDRESS PioIrv Equ $ ; PIO BASE INTERRUPT VECTOR If Not WrkStn Dw PioGaI ; GRAPHIC SCREEN READY Dw PioGbI ; GRAPHIC KEY BOARD Else Dw UnkInt ; Dw UnkInt ; Endif CtcIrv Equ $ ; CTC BASE INTERRUPT VEKTOR Dw UnkInt ; Dw UnkInt ; Dw UnkInt ; Dw ClkIrq ; (10 Hz TICK) Sio1Iv Equ $ ; SIO1 BASE INTERRUPT VECTOR Dw KbdIrq ; KEYBOARD INT. Dw KbdIrq ; Dw KbdIrq ; Dw KbdErRq ; Dw LptIrq ; Dw LptIrq ; Dw LptIrq ; Dw LptErRq ; Db 'This area is used as stack by CCP but You ' Db 'can use it for interrupt vectors when' Db ' CCP not in ram ' Boot$Stack Equ $ Page ;------------------------------------------------------------; ; Boot -- Cold start init. routunes. ; ;------------------------------------------------------------; Dseg ;; Code in Bank0. Boot: Di ;; Ld Sp,Boot$Stack ;; Call ?Patch ;; Patch loader parameters Ld Bc,16*256+0 ;; B=Counter, C=Dev#. C_Init_Loop: ;; Push Bc ;; Call ?CInit ;; Init char. dev. Pop Bc ;; Inc C ;; Djnz C_Init_Loop ;; Call ?Init ;; Init the rest. If Not NetWork Ld A,(BotFlg) ;; Winchester boot? And A ;; Jr Z,GoOn ;; No...jump Ld Hl,(@DTbl+4) ;; GET C: Ld De,(@DTbl+2) ;; B: Ld Bc,(@DTbl) ;; A: Ld (@DTbl),De ;; B: --> A: Ld (@DTbl+2),Hl ;; C: --> B: Ld (@DTbl+4),Bc ;; A: --> C: Endif ; Go on init 16 logical disk units. GoOn: Ld Bc,16*256+0 ;; B=Counter, C=Log. drive# Ld Hl,@DTbl ;; drive table. D_In_Loop: ;; Push Bc ;; save # and drive.  Ld E,(Hl) ;; get DPH-vector Inc Hl ;; Ld D,(Hl) ;; in De. Inc Hl ;; Ld A,E ;; does drive exist ? Or D ;; Jr Z,D_In_Next ;; No...next Push Hl ;; save vector pointer Ex De,Hl ;; Dec Hl ;; .media byte Dec Hl ;; .controller rel. address Ld A,(Hl) ;; get it Ld (@RDrv),A ;; and save it Ld A,C ;; And save Ld (@ADrv),A ;; logical drive#. Dec Hl ;; Get init-vector Ld D,(Hl) ;; Dec Hl ;; Ld E,(Hl) ;; into De. Ex De,Hl ;; Call IPcHl ;; execute init. Pop Hl ;; Restore vector pointer. D_In_Next: ;; Pop Bc ;; Restore counter, drive Inc C ;; Next drive Djnz D_In_Loop ;; Loop... Jp Boot$1 ;; Take the last part in Bank1. Cseg ; Bank 1. Boot$1: Call SetJumps ; Set jump vectors Call ?LdCcp ; Read Ccp.Com from disk Jp Ccp ; ;------------------------------------------------------------; ; WBoot -- Warm boot routine. ; ;------------------------------------------------------------; WBoot: Ld Sp,Boot$Stack ; Ld Hl,0 ; Ld C,5 ; Reset Lpt interrupt buffer Call ?UserF ; Ld C,2 ; Call ?UserF ; Flush floppy/winchester buffers Call SetJumps ; Init page zero Call ?RlCcp ; Reread Ccp.Com Jp Ccp ; SetJumps: Ld A,1 ; Select Bank1 Call ?BnkSl ; Ld A,JpOp ; Z80 Jp opcode Ld Hl,?WBoot ; Warm Boot entry point Ld (0),A ; Ld (1),Hl ; Ld Hl,(@MxTpa) ; Bdos entry point Ld (5),A ; Ld (6),Hl ; Return: Ret ; ;------------------------------------------------------------; ; DevTbl -- Returns the address to character device table. ; ;------------------------------------------------------------; DevTbl: Ld Hl,@CTbl ; Ret ; ;------------------------------------------------------------; ; GetDrv -- Returns the address to drive table. ; ;------------------------------------------------------------; GetDrv: Ld Hl,@DTbl ; Ret ; Page ;------------------------------------------------------------; ; Character I/O Routines. ; ;------------------------------------------------------------; ;------------------------------------------------------------; ; ConOut -- Console output. Sends a charcter in (C) to all ; ; choosen devices. ; ;------------------------------------------------------------; ConOut: Ld Hl,ConOutB0 ; Jp Bank0Call ; Dseg ConOutB0: ;; Ld Hl,(@CoVec) ;; Get console oputput bit vector Jr OutScan ;; Cseg ;------------------------------------------------------------; ; AuxOut -- Auxilliary output. Sends a character in (C) to ; ; all choosen devices. ; ;------------------------------------------------------------; AuxOut: Ld Hl,AuxOutB0 ; Jp Bank0Call ; Dseg AuxOutB0: ;; Ld Hl,(@AoVec) ;; Get aux output bit vector Jr OutScan ;; Cseg ;------------------------------------------------------------; ; List -- List output. Sends a character in (C) to all ; ; choosen devices. ; ;------------------------------------------------------------; List: Ld Hl,ListB0 ; Jp Bank0Call ; Dseg ListB0: ;; Ld Hl,(@LoVec) ;; Get list output bit vector ;; and do OutScan OutScan: ;; Ld B,0 ;; Start with device 0. CoNext: Add Hl,Hl ;; Shift next device bit Jr NC,NoOutDev ;; Jump...if not set Push Hl ;; Save bit vector Push Bc ;; device and char. CoOutRdy: ;; Call Coster ;; Or A ;; Ready ? ? Jr Z,CoOutRdy ;; No...jump Pop Bc ;; B=device# C=Char Push Bc ;; save Call ?Co ;; Send char Pop Bc ;; Restore Pop Hl ;; NoOutDev: ;; Inc B ;; Next device# Ld A,H ;; Any bits left in bit vector Or L ;; Jr Nz,CoNext ;; Yes...loop Ret ;; Cseg ;------------------------------------------------------------; ; ConoSt -- Console output status. Returns true if all  ; ; choosen console output devices are ready. ; ;------------------------------------------------------------; ConoSt: ; Ld Hl,ConoStB0 ; Jp Bank0Call ; Dseg ConoStB0: ;; Ld Hl,(@CoVec) ;; Get console output bit vector Jr OStScan ;; Cseg ;------------------------------------------------------------; ; AuxOSt -- Auxiliary output status. Returns true if all ; ; choosen aux output devices are ready. ; ;------------------------------------------------------------; AuxOSt: ; Ld Hl,AuxOStB0 ; Jp Bank0Call ; Dseg AuxOStB0: ;; Ld Hl,(@AoVec) ;; Get aux output bit vector Jr OStScan ;; Cseg ;------------------------------------------------------------; ; ListSt -- List output status. Returns true if all choosen ; ; list output devices are ready. ; ;------------------------------------------------------------; ListSt: ; Ld Hl,LstStoStB0 ; Jp Bank0Call ; Dseg LstStoStB0: ;; Ld Hl,(@LoVec) ;; Get list output bit vector. OStScan: ;; Ld B,0 ;; Start with device #0. CosNext: ;; Add Hl,Hl ;; Shift next device bit Push Hl ;; save bit vector Push Bc ;; B=dev#, C=Char. Ld A,-1 ;; Set dev. ready Call C,Coster ;; Get status if choosen Pop Bc ;; Restore Pop Hl ;; Or A ;; Ready ? Ret Z ;; No...Return false. Inc B ;; Next device Ld A,H ;; Any more devs. ? Or L ;; Jr Nz,CosNext ;; Yes...loop Or 0FFH ;; All choosen devices ready Ret ;; Return true. ; CHECK IF OUTPUT DEVICE READY (XON/XOFF SUPPORT). Coster: Ld L,B ;; CHANGE DEVICE # TO 16 BITS Ld H,0 ;; Hl=DEV# Push Hl ;; Add Hl,Hl ;; OFFSET IN DEVICE-TABLE Add Hl,Hl ;; Add Hl,Hl ;; Hl=Hl*8 Ld De,@CTbl+6 ;; De= MODE BYTE F\R DEV 0 Add Hl,De ;; Hl=R[TT MODE BYTE Ld A,(Hl) ;; GET MODE BYTE And MbXonXoff ;; XON/XOFF PROTOCOLL? Pop Hl ;; Hl=DEVICE # Jp Z,?CoSt ;; NO XON/XOFF...JUMP Ld De,XoffList ;; Add Hl,De ;; Hl=PLACE IN XoffList Ld C,0 ;; FLAGSTATUS FOR ^C, ^S, ^Q ONLY Call CiStl ;; Ld A,(Hl) ;; Call Nz,CIL ;; Cp CtlQ ;; Jr Nz,NotQ ;; Ld A,-1 ;; SET READY-FLAG NotQ: Cp CtlS ;; CTL-S? Jr Nz,NotS ;; NO...JUMP Xor A ;; CLEAR FLAG NotS: Ld (Hl),A ;; SAVE FLAG Call CoSt1 ;; GET OUTPUT STATUS And (Hl) ;; And MASK WITH XON/XOFF FLAG Ret ;; And Return IT AS STATUS CiStl: Push Bc ;; GET INPUT STATUS WITH (Bc) & (Hl) Push Hl ;; Call ?CiSt ;; Pop Hl ;; Pop Bc ;; Or A ;; Ret ;; CoSt1: Push Bc ;; GET OUTPUT STATUS, SAVE (Bc) & (Hl) Push Hl ;; Call ?CoSt ;; Pop Hl ;; Pop Bc ;; Or A ;; Ret ;; CIL: Push Bc ;; GET INPUT And SAVE (Bc) & (Hl) Push Hl ;; Call ?Ci ;; Pop Hl ;; Pop Bc ;; Ret ;; Cseg ;------------------------------------------------------------; ; ConSt -- Console input status. Returns true if any choosen ; ; console input device has a character available. ; ;------------------------------------------------------------; ConSt: ; Ld Hl,ConStB0 ; Jp Bank0Call ; Dseg ConStB0: ;; Ld Hl,(@CiVec) ;; Get console input bit vector Jr IstScan ;; Cseg ;------------------------------------------------------------; ; AuxISt -- Auxialiary input status. Returns true if any ; ; Choosen aux input device has a character avail. ; ;------------------------------------------------------------; AuxISt: ; Ld Hl,AuxIStB0 ; Jp Bank0Call ; Dseg AuxIStB0: ;; Ld Hl,(@AiVec) ;; Get aux input bit vector IstScan: ;; Ld Bc,0 ;; START WITH DEVICE 0 ;; CREG = 0 = FLAG, STATUS Call ONLY CisNext: ;; Xor A ;; SET DEVICE NOT READY Add Hl,Hl ;; SHIFT OUT ONE BIT Call C,CiStl ;; CHECK STATUS ON THIS DEVICE Or A ;; IF ANY READY Return TRUE. Ret Nz ;; Inc B ;; NEXT DEVICE # Ld A,H ;; CHECK IF ANY MORE DEV. Or L ;; Jr Nz,CisNext ;; Xor A ;; ALL CHOOSEN NOT READY. FALSE Ret ;; Cseg ;------------------------------------------------------------; ; ConIn -- Console input. Returns a character from first ; ; ready console device. ; ;------------------------------------------------------------; ConIn: ; Ld Hl,ConInB0 ; Jp Bank0Call ; Dseg ConInB0: ;; Ld Hl,(@CiVec) ;; Get console input bit vector Call InScan ;; And 7FH ;; strip off parity bit. Ret ;; Cseg ;------------------------------------------------------------; ; AuxIn -- Auxialiary input. Returns a character from first ; ; ready aux input device. ; ;------------------------------------------------------------; AuxIn: ; Ld Hl,AuxInB0 ; Jp Bank0Call ; Dseg AuxInB0: ;; Ld Hl,(@AiVec) ;; Get aux input bit vector InScan: ;; Push Hl ;; SAVE BIT VECTOR Ld B,0 ;; START WITH DEVICE 0 Ld C,-1 ;; CREG = FF = STATUS Call FOR INPUT CiNext: ;; Xor A ;; SET NO CHAR Add Hl,Hl ;; SHIFT OUT ONE BIT Call C,CiStl ;; CHECK IF DEVICE HAS A CHAR Or A ;; CHAR? Jr Nz,CiRdy ;; YES...JUMP Inc B ;; TEST NEXT DEVICE Ld A,H ;; Or L ;; Jr Nz,CiNext ;; Pop Hl ;; Hl=BIT VECTOR Jr InScan ;; LOOP UNTIL GOT A CHAR CiRdy: Pop Hl ;; Hl=BIT VECTOR Jp ?Ci ;; GET INPUT FROM DEVICE # IN B. Page Cseg ;------------------------------------------------------------; ; Subroutines ; ;------------------------------------------------------------; IPcHl: Jp (Hl) ; VECTOR-Call ?PMsg: ; Prints a message @(Hl) terminated ; with Db 0. Ld A,(Hl) ; Get next char Or A ; is it 0 ? Ret Z ; Yes...Return Push Hl ; Save registers Push De ; Push Bc ; Ld C,A ; char in (C) Call ?ConO ; print it Pop Bc ; Restore Pop De ; Pop Hl ; Inc Hl ; Next byte Jr ?PMsg ; Loop... ;------------------------------------------------------------; ; ?Move -- Blockmove: Memory to memory. ; ; ; ; At entry: Hl = Destination address. ; ; De = Source address. ; ; Bc = Counter. ; ; At exit: Hl & De pointing to the next bytes ; ; that follows the move. ; ;------------------------------------------------------------; ?Move: Ld A,B ; Is it a zero-move ? Or C ; Ret Z ; Yes...quit Ld A,(BnkFlg) ; Is ?XMove involved ? And A ; Jr Nz,Move1 ; Yes... Ex De,Hl ; Exchange addresses to fit Ldir ; this instruction Ex De,Hl ; and get them back. Ret ; Move1: Di ; Shut up for a moment Call WaitDma ; Wait for Dma Xor A ; Zero ?XMove-flag Ld (BnkFlg),A ; Ld (SrcAdr),De ; Set source address in Dmatable Ld (DstAdr),Hl ; Set destination address in Dmatable Add Hl,Bc ; Hl= End dest.address Push Hl ; Saved. Ex De,Hl ; Add Hl,Bc ; Hl= End sourceaddress Push Hl ; saved. Dec Bc ; Reduce blocklength with 1 Ld (Length),Bc ; Check for the Dma command Ld A,B ; Or C ; Ld A,11001101b ; If not 1 byte set burst mode Jr Nz,Move2 ; Ld A,10001101b ; else set byte mode. Move2: Ld (Mode),A ; SAVE THE Mode Ld Hl,(DstBnk) ; Ld A,H ; Dest.bank in A. Rla ; shift out left Or L ; add on source bank. And 00000011b ; mask garbidge. Ld L,A ; Will give index Ld H,0 ; in table. Ld De,BnkTbl ; Offset in the table. Add Hl,De ; Point to the right byte Ld A,(Hl) ; Get it. Ld Hl,BnkMsk ; Add on bankmask Or (Hl) ; Ld Hl,DmaTbl ; Point to the Dmatable. Out (BnkMux),A ; Start dma Ld (MuxByte),A ; Push Bc ; Save counter Call IniStm ; Pop Bc ; Restore counter Ld A,B ; Or C ; Jr Z,Move4 ; Move3: In A,(Dma) ; Read status And 00100000b ; ready ? Jr Nz,Move3 ; No... Move4: Ld A,DmDisa ; Disable Dma Out (Dma),A ; Xor A ; Free Dma Ld (DmaFlg),A Ei ; Speak again Pop De ; Restore parameters Pop Hl ; Ld Bc,0 ; COUNTER=0 Ret ; ;------------------------------------------------------------; ; WaitDma -- Wait until Dma is free, then mark it busy. ; ;------------------------------------------------------------; WaitDma: ; Ld A,(DmaFlg) ; And A ; Jr Nz,WaitDma ; Inc A ; Ld (DmaFlg),A ; Ret ; ;------------------------------------------------------------; ; ?XMove -- Sets correct banks for data transferes. ; ; ; ; At entry: B = Destination bank. ; ; C = Source bank. ; ;------------------------------------------------------------; ?XMove: ; Ld A,True ; Ld (BnkFlg),A ; Mark ?XMove Ld (DstBnk),Bc ; Gives (C) in dest.bank ; and (B) in source bank. Ret ; ;------------------------------------------------------------; ; BnkSel -- Select bank. ; ; ; ; At entry: A = Memory Bank. ; ;------------------------------------------------------------; BnkSel: ; Di ; Nothing crazy may happen now Ld (@CBnk),A ; Save current bank And 1 ; mask Ld A,Bank0 ; Start with Bank0. Jr Z,Bnk1 ; Bank0 ? Yes... Ld A,Bank1 ; Else set Bank1. Bnk1: ; Ld (BnkMsk),A ; Out (BnkMux),A ; Send it to Bank select port. Ld (MuxByte),A ; Ei ; It worked. Ret ; Page ;------------------------------------------------------------; ; Disk Drive Routines ; ;------------------------------------------------------------; Dseg ;; Bank 0. ;------------------------------------------------------------; ; SelDsk -- Select disk drive. Executes the login procedure ; ; for the drive if it is the first time select. ; ; ; ; At entry: C = Selected drive. ; ; E = Bit0 reset if not slected before. ; ; At exit: Hl = 0 if drives does not exist. ; ; Hl = @DPH if drive exists. ; ;------------------------------------------------------------; SelDsk: Ld A,C ;; Ld (@ADrv),A ;; SAVE # Ld L,C ;; CREATE INDEX Ld H,0 ;; Add Hl,Hl ;; Hl=2*DRIVE #TO OFFSET Ld Bc,@DTbl ;; POINT TO DRIVE-TABLE-HEAD Add Hl,Bc ;; Hl=CORRECT VECTOR IN @DTbl Ld A,(Hl) ;; GET DPH-POINTER Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Hl=DPH-POINTER Or H ;; SET Z-FLAG And Ret Z ;; Return IF NO DRIVE Ld A,E ;; And 1 ;; FIRST SELECT? Ret Nz ;; NO...Return Push Hl ;; SAVE DPH-POINTER Ex De,Hl ;; Ld Hl,-2 ;; GET (DPH-2) Add Hl,De ;; Ld A,(Hl) ;; Ld (@RDrv),A ;; SAVE THE CONTROLLER RELATIVE DRIVE# Ld Hl,-6 ;; GET THE LOGIN-VECTOR Add Hl,De ;; Ld A,(Hl) ;; Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Call IPcHl ;; DO LOGIN Pop Hl ;; Hl=DPH-POINTER Ret ;; ;------------------------------------------------------------; ; Home -- Home selected drive. Do SetTrk (0). ; ; ; ; SetTrk -- Set track address. ; ; ; ; At entry: Bc = Track address ; ; At exit: (@Trk) = Track address. ; ;------------------------------------------------------------; Home: Ld Bc,0 ;; Track=0 SetTrk: Ld (@Trk),Bc ;; Save track address Ret ;; ;------------------------------------------------------------; ; SetSec -- Set sector address. ; ; ; ; At entry: Bc = Sector address ; ; At exit: (@Sect) = Sector address. ; ;------------------------------------------------------------; SetSec: Ld (@Sect),Bc ;; Save sector address Ret ;; ;------------------------------------------------------------; ; SetDma -- Set Direct Memory Access disk address. ; ; ; ; At entry: Bc = Dma address ; ; At exit: (@Dma) = Dma address ; ; (@DBnk) = @CBnk ; ;------------------------------------------------------------; SetDma: Ld (@Dma),Bc ;; Set global Dma address Ld A,(@CBnk) ;; Default Dma Bank is current Bank ;; get current Bank & do SetBnk ;------------------------------------------------------------; ; SetBnk -- Set disk I/O memory Bank. ; ; ; ; At entry: A = Disk Bank # ; ; At exit: (@DBnk) = Disk Bank # ; ;------------------------------------------------------------; SetBnk: Ld (@DBnk),A ;; Set Disk Dma Bank Ret ;; ;------------------------------------------------------------; ; SecTrn -- Sector translate. Translate logical sector number; ; to physical sector number. ; ; ; ; At entry: Bc = Logical sector # ; ; De = Pointing to TransTable. (0 if none). ; ; At exit: Hl = Physical sector #. ; ;------------------------------------------------------------; SecTrn: Ld L,C ;; Ld H,B ;; Hl=CP/M sector # (relative 0) Inc Hl ;; Hl= -"- (relative 1) Ld A,D ;; Test De=0 Or E ;; Ret Z ;; Yes...Return, no TransTable Dec Hl ;; Hl= CP/M sector # (relative 0) Add Hl,De ;; Hl=Index in table Ld L,(Hl) ;; Translate to sector # from table Ld H,0 ;; 8 bits value Ret ;; ;------------------------------------------------------------; ; Read -- Reads physical sector from selected disk to current; ; @Dma address. ; ; ; ; At entry: None ; ; At exit: A = 0 Ok. ; ; A = 1 if error. ; ; A =-1 if media change. ; ;------------------------------------------------------------; Read: Ld De,-8 ;; Index offset to Readroutine Push De ;; on the stack Jr RWCommon ;; Read-Write-Common-Routine ;------------------------------------------------------------; ; Write -- Writes physical sector on selected disk from ; ; current @Dma address. ; ; ; ; At entry: C = Deblocking code. ; ; At exit: A = 0 If Ok. ; ;  A = 1 Physical error. ; ; A = 2 Disk is R/O. ; ; A =-1 If media change. ; ;------------------------------------------------------------; Write: Ld De,-10 ;; Index offset to Writeroutine Push De ;; on the stack RWCommon: ;; Ld Hl,(@ADrv) ;; Get drive # Ld H,0 ;; Add Hl,Hl ;; Hl=2*Drive# Ld De,@DTbl ;; Add Hl,De ;; Ld A,(Hl) ;; Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Hl=DPH Pop De ;; De=Read/Write Push Hl ;; SAVE DPH-ADDRESS Add Hl,De ;; Hl=Read/Write IN DPH Ld A,(Hl) ;; Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Hl=Read/Write-VECTOR Pop De ;; DE=DPH Dec De ;; Dec De ;; Ld A,(De) ;; Ld (@RDrv),A ;; A=CONTROLLER RELATIVE DRIVE# Inc De ;; BACK TO DPH Inc De ;; Jp (Hl) ;; DO THE ROUTINE IN EXTMEM.Z80 ;------------------------------------------------------------; ; MultIO -- Set multiple sector count. ; ;  ; ; At entry: A = Sector count. ; ; At exit: (@Cnt) = Multiple sector count. ; ;------------------------------------------------------------; MultIO: Ld (@Cnt),A ;; Save the counter. Ret ;; ;------------------------------------------------------------; ; Flush -- Flush all disk buffers. ; ;------------------------------------------------------------; Flush: Ld C,2 ;; Call ?UserF ;; Xor A ;; Return no error. Ret ;; Page ;------------------------------------------------------------; ; Variables ; ;------------------------------------------------------------; Cseg ; MUST BE IN Bank1 @ADrv: Db 0 ; SELECTED DISK DRIVE # @RDrv: Db 0 ; CONTROLLER RELATIVE DISK DRIVE# @Trk: Dw 0 ; TRACK # @Sect: Dw 0 ; SECTOR # @Dma: Dw 0 ; Dma ADDRESS @Cnt: Db 0 ; RECORD COUNT FOR MULTISECTOR I/O @DBnk: Db 0 ; Bank FOR Dma OPERATIONS @CBnk: Db 0 ; Bank FOR PROCESSOR OPERATIONS BnkMsk: Db Bank0 ; MASK FOR PROC-/Dma-OPERATIONS. MuxByte: Db 0 ; DmaFlg: Db 0 ; Dma busy flag BnkFlg: Db 0 ; FLAG FOR ?XMov DstBnk: Db 0 ; DEST-Bank FOR ?XMove-?Move SrcBnk: Db 0 ; SOURCE-Bank FOR ?XMove-?Move BnkTbl: Db DmBk00 ; Bank0 --> Bank0 Db DmBk10 ; Bank1 --> Bank0 Db DmBk01 ; Bank0 --> Bank1 Db DmBk11 ; Bank1 --> Bank1 DmaTbl: Db 23,Dma ; 23 Bytes to Dma Db DmDisa ; DISABLE Dma Db DmRset Db DmRset Db DmRset Db DmRset Db DmRset Db DmRset Db 01111101B ; CR1A: BLOCKLENGTH LOW o. HI FOLLOWS, ; PORT A START ADDRESS LOW o. HI ; FOLLOWS A->B, TRANSFER. SrcAdr: Dw 0 ; SORCE-ADDRESS (PORT A) Length: Dw 0 ; BLOCKLENGTH - 1. Db 00010100B ; CR1B: PORT ADDR. Inc. PORT A-MEMORY. Db 00010000B ; CR1B: PORT ADDR. Inc. PORT B-MEMORY Mode: Db 0 ; CR2B: BURST/BYTE-Mode DstAdr: Dw 0 ; DEST-ADDRESS (PORT B) Db 10000010B ; CR2A: STOP END-OF-BLOCK Db 11001111B ; CR2D: LOAD STARTADRESSES FOR BOTH ; PORTS And ZERO THE COUNTER. Db 10001011B ; CR2D: ZERO STATUS-BITS Db 10110011B ; CR2D: FORCE READY. Db DmEnab ; ENABLE Dma Db 10111111B ; CR2D: SET NEXT READ STATUS. Db 0 ; TABLE END. Dseg ;; Bank0 XoffList: Db -1,-1,-1,-1,-1,-1,-1,-1 Db -1,-1,-1,-1,-1,-1,-1,-1 End .Yl]"y2;!"(:2(=2(:=;!~;4#.{2(!" "9"2!;(y3]K!o\b!,_^#V* !J ^#V̀:#!"(COPYRIGHT (C) 1982, DIGITAL RESEARCH 151282/(  + 1 7 = }!!!!"""""# ####$$$$#$-$A$J$S$@Y$u u J$u u }$$$$$*%P%$%&'('d'''(('({ A g X J v !)$*^#V#^#Vw# ll l ls:¬MA wM  2*7w#6?#7 .,:;[]=<>|!?]45#Ra{i_p# l s s͂:(A2= / ::0! dگ61#d ڸïp#:w#6 !6:6 *#!)6.#)͂ O(BDOS Function = File = !,$-"h!9"f! ͉:2(t™:! =Hgo:O*;*Ó*"r*r"ÿ<:g:!͐*f}D! ~6t!r ͷO(^  : šn!6@G:x: P:<: P n6 t6! ^6 t6u:)<͠^! G:Ҏ>xʝʝw>ɯw̩z:»!>wɯ:=zxzz: :G:=/ͽx:Āy!4 5~y 5 6y(^@O:=7:y :I :=e:  zz#͂:!  r  ! O(Ì*( ~2* *}ʷ!#¶!""÷:_:*( #wxH! )6"& :!  x2 GH)+6:2, :!-  :, !+*( ~L#Bxz:* : *( ~ʓOڊ{2Ó#w:2. +:. 2- !% "( 2* ! "& !* ~4:2- Ԃ: Gͳͨ^2+ >2:2 *N#G2  :+ ̜2 5*( ~o#"( M š*( ~`Uoj*( ~#"( Ñ!* ~6s!+ 6:+ ‚xoͳ*& ~2+ o#"& !+ 6M : W:2 x ͺ*( +"( w  : >2* 2 :*( : +w"( ͺ:G:  !% "( ^-:* $P:<\: W:2 xM s:<9>2 :* 9x~+q ’x2 :* ͂^2 ¢ů͠: !ڽ*( ~5WèjM 2 ͨx*( +w"( j>2+ 2* jx. #NzW:  : !2 W! 5= ^x^ z: m :* ;#wO: 9ʌ ^:— ~x  ) :* :   >*( +"( w++2+ 2+ p!" r y< < <% zr ͷr 6r 9r MDÌ:o !6!h : ʚnt2 r 62 >r z<*)$"!z<~r s^#V#N#FxN:oʲ ̀õ (# Þ CP/M Error On : Disk I/OInvalid DriveRead/Only FileRead/Only DiskPassword ErrorFile Exists? in Filenameò ò >2(a." :(2:<:5(5(;(:(2ɯ2(2{_zW{_zW ) 74#4#4)7( #  w#*J|^#V#"i(##"k(##"m(###"o(#"q(##"(!s( )*s(!()*(|!(6~67*k(w#w*m(w#w#w>2('å2(*OͶyڲ ò <*e(Ͳ:0!(:(:(ò 2*(>*ͫ"(!(s#r#p*k(N#F*m(^#V#F*(:(O}|y9*( +"*( }|yP#9*( *(DM"(*k(s#r*m(s#r#pyoxg͝DM*(0MD"(!*MD$:(Oë!(N:( «G>O:( ù* :(n` ~#foͤ2(O"(}:(O*( "(2("(:(O:(G2(!(w*~zWw+ !z?#~*!* *G!O~2(~m͗O~t>2(?:(2(O:(w:Ғ4~:(w?r##rp# ä |g}oì*g( #G ¾1*q(:(*w***> r )e(:(O!*c(:(Oͫ}@2æ  ~á *g(:(o$*~K6?~wKw**i({#zir+s{ozg*(*(|g͸*u(*(  R>22Z$w*q(>ww:(c( *(#*i(s#r*:(!(:G~#<*q(#~!;(!(!(!~6k!"2(*q(N1q*{(]*{([*y(}<^#V(t6 ^#V}e ^#V#~2(>â9͆>!"(*y(³*(X)*ÿ͂"*g(*K! ~<:wb##>w#w> r !~#<!"@*(*#":&2(͒:È0:+Òy<_W`iͫDM*w( ~bNpwDM*w(T] KKͦ*w("w(ͦ"w(@ :(N N#Fy*(}|h#ð*(ͫ# 6*q(@-RXDM*w(6# x *o(w*(*w(s#r̀*i(6#6*}("(j-@*(|<ď+>!8>8> t>nͦv8 ~*o(wn:(r :(/GyOOA +¬ ¢y2(:(x¹o&:(W>OͫE:(ڟ?N/*"(y2ͦ+>2( ̀2(k,ºʺ*(*iҺ@:O~2(~WW:2(Ôyʛ?ʔx ʔ |̷ÔN͆G:(<2(x# W:(<­:2(2 G?>Gr x~:(2(Ô##~*$*">2>2: *(~w *" 2(>ʄ@~k:((s~*9~Ês~ ~ͅ<Eʀ@~›:(6!¦w͚̋,ÇPY*({zBKNyʺ Nú # #>? ;*~ w-xąH"(0 *(#ĊH( ,ˆʀHÈ2(xą ):(@O~#w͚ʀô̓-b_++V@* )͗Os++r!x>w~6:(6~#+w#w+~;wɯ2 K,OFq-yl?Npg&:(ʓ~†wŒ~è# # x ͗w w@ ~wb͐Ú!"*>o+"v- *!b("": r#~?w#>r# L=J! Lv w,b ?~O ͆=: <>w##~2( 4~?̓-¹:(<üAX2(r K:(w++~=wv 4͗O5:(2(X:(!(v q: v v Mڂ?Ͷ >T͓Â!"(>(Â:(G:(O:(h=2(7ryy/W!(:(lڈ>F6:(_/G:(ʧ:(ڨ|OͤG:(_OzW{|:(*(}|BKN zyG:(2(9:(>#:(>#*+S!X:(ڜq: ʺ!((ʵ>2( ͤ2(O DM͸}>r "("(2(:(2(* :(:(FsO s#r:(„y==„*(!(^W*y(^#Vx+7=2(wͼկw#KWK*("(J T͞*(:(["(Ͷ:(WMںʛ>(úͶ >TJ:(!(ʷ͞x!(w4 PWP  Â*!!~~#~O~#G~.|°! w:ck[!x?[! ~ʤ͆[͗PPv qO-á=.: <ʰ! Vq##~_@w: <œ. ʩ.ʩA r r##s <}r cN! ~态O>G~G!~G~o>_yW#x#W{s+p+q7r#r#r>@ >2  !!q#p#w2(wW*e(_3ҫ -!(s:(!(xQ*q(~wɯ2(2(ù*~2(~w#~2(~wZ!""2(=2*~2(=2(2(k:*wX/ 6X*̀!~$6:03i"!~6*e(>=)Q!(QX<k*{(}<^#V{!~! _*o(~s̓  2@ !()#w*~"!!(Fw̓ :(w̚":>#2(̓ *~wć"#Fx T]## #~ ȷ   *4 # '  4 !( *~^ ^ 33G# P v :dv 6 y #*~w>2 *p@! ~*"v@*w# ) 6# ͙   !N)@ u :G*g(`~!x_<_@!*o(y<:(/G?~##~? 6!K@?F6##N6 2 p##q:r !Z$2!"ög:(2T͐-:ʹ!>2<2(!!(w: >2(*6!O~2(+A@2! ͚A=: <%~?¯"k"?~?ʾ"ZT͐"*>o"͒"!:O"(Ý"}-6͚͚c2(ZT͐-3#͗#@!Y#sY#̓ Y# Y#ͅ:(As#:(@#@!#$̓ —#>2—#͇ͱ * «#>2(͙ wB p'+!#:(w͚AP{" 2! W>O2 ø }-R*e()$:(r "ök*w()$*c()$-}-ͤÀk*s(" :(;$:r 2͚ù͚͚}/_|/*e(W}_*c("e(}o|g"c(>2({2{2g*w(ʪ$Ң$Þ$+}$*(#}o|g:(O *s#r#w!~w/~@w//Hͥ*e(>=)%_g:0%w:- %:(<%R$Hͥ:(>(~c!o#~E%^#V)$G#~#~!%~ b%% k%%##N#F#^#V#~#fo~o!o#~>T}! 6**#K" G*~ xr ͐-xą@7(͚S!ʀq&&͋"&@6,͚%Xͤ͋&͗wO~<:( g&~w#w#6##)͋&@ * g&~?G++N͆p# Þ&͐*6!¿&?~p*6 &>2ͱ ! ! ͷ w*o(w'ͧ B pͧ ,Úgsr ͐-ͤ͜!S')_'ͤ̓ ~?w͐s-?F͜p!'̓ ¡'>2ͱ ?~¾'¾''''>w'͙ =2(͜!:(wÚ~̓ ʑ'pá'!(6NN!(r )!(N !)z<*)$"!" :X(*:(w:(w#:(w*2* }D#cdfg!"()*{(X)^#V!"(:(<)!~<<)^#V*(<)"("(x+)!(*(>X)*{()Q*:(_2({2(Ē*"(͂"X*~<)ҍ) -)a*ʚ)~)6*(:(X*)!(:(T>q*k)!(:()-6>)ʴ+>2d,:+#++>29+2~2#! , , ,)x,) ,O +"!w [,O?WGzO:(V,xGyOG,xwq*}(}2*i(^#V+ d,!(K*}(@+*)):( K:(ڗ>2#-×:#-<)2#-*(!""++"(29-C-%w*{(}<^#Vz!(c-!>c-! J-w*q(~69!͐9bBI$"" HB@ UUUUUUUUUUUUUUUUUAPDA$! @I !@D@BDI@!B$ @$I$$ "@$$@@HHBD"D$H D@!IB@ A"B HBIB$$ "$ D$!"D$H$D$I@D BD" H$BHHBDHB"H!"!!$$HH !"BB$HHDA! "D"H $B!$!AI!$ $ H  H A$I! I" $$BD"$H "AHD @ I  B"$$H @@@@" BHB  !I$ @ $@$"$AI$$IBI$I H@@I!$DA $ $@$ !$!!" !$I@I $@ $ @!H"BI"HI DIHA DD$HH $  B D$ "I$I$H$ I !  $I$I$I $@HD$@!$"A$A DBIDB  @$$DD""I $BHI$IB !@"BD BBD "@B @$ $BI I B$@" ! "H !$B I$D@! !$ @H!$$D"@A@ DHII  D@@ $ DHI"D$ @ $""@ B! @@D $$A$ $D "@I $A$$I!HI$ BA$ $DH $I$I"HI$I!$DB$"B I$$I$ !I$@DBB$@D@"I A!$ @  @  "$ $I$I$ B!$@ I @I$ HBDH$ A$H!$D$ $I"B IIBB"$B@DH"$$ IH $$ !I"AD B!B  BI$A$"@$I$!!""@H! $!@I$ WCopyright (C) 1982, Digital ResearchYl] BNKBIOS3 SPR FA00 0600 BNKBIOS3 SPR 8F00 2900 RESBDOS3 SPR F400 0600 BNKBDOS3 SPR 6100 2E00 61K TPA $$$$$M21:Qk&) ~#fo( ++N^#VQxy!m:(61*2:Q́fQy2"{2H2y A!C9:(+2!91:QfQ̈́>@!{>94 #~0>0Ms1! 5 ,6 !~'`8w+~<'`8w+~<'$8 w++APH LPT1 LPT2 ~G#N#sC1m"5:QoQ}{C"E!ԑ"! "͂ ! !W K>QCCP COM Vi@@䰗|䏗CRT LPT CEN GR2 }ϋ2!"< !fQa>Q!a,2S'". C)x> >2-*|o&~!!2x( >2: <2>2C2> (>2>Q>!2"*2"!!!\"!a"!f"!"!"!"!"!"! "!"~O #x: This area is used as stack by CCP but You can use it for interrupt vectors when CCP not in ram 71!ͭͭ͏HT$0*Z[.^chÅBs6N<v èìqoí|||Ã1Oj$|aÃà à ÃBB+"}{_}o>2~77ø~7"9:OG#Q{ozg# ""!2*%DM**ѵ+)) H~#+}#<:<ʲ<77:<ʢ=2(*f*(}DɯQa"(>QKQKQ>Q"%Q!*$K*"x!*!@$@hK\K:K ~#~ w*NK*NK^#V#N#F!x>QGQx3ڰbڼqҼo5p5"""*!yb! ~G*!NKկ2}!,"**NK6 :+OK2$^#V#N#FxNp:$p:Gjxj Y# A>QFQKK{<<ʽ! ~6 69BK! OSYl]$Nwy!"(9"f1f! Ҕ2! ~#foCOPYRIGHT (C) 1982, DIGITAL RESEARCH 151282W$LBFCMD$*LCLEAR$8JLASTJBSCSInone) Dw 3201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOKTR$LWAITRQ؅L.WRIT\]].^=^XXYYZūZԫ[[\TT U/U>VMV\WkWzOPPQQƪRժRSSKL!L0M?MNN]NlO{GGHHIǩI֩JJKBCC"D1D@EOE^FmF|>??@@ȨAרAB::;#;2<A<P=_=n>}66778ɧ8ا99/_{w&(7{/($333B4Q4`5o5~ Ϳ .Ѧ6&~&_(~'/_ OG~/#.N(O.F(Olume overflow Invalid logical unit No message for this errorp6&6, 5,('ͪͿO( G Ѧ8($ͪ bad format on winchester ! Use FORMATER ! Self test failed Defective track (media error) Illegal block address Vo Record not found Seek error Data check in no retry mode Ecc error during verify Interleave error Unformatted or!ɐ I.D. CRC Error Uncorrectable data error I.D. Address mark not found Data address mark not found!6.86.ݶ-wpqr B!6.86.ݶ-wpqrB!~/V2850701PSW!!֣6.6 B B!2w'ww-w .!6#mt!90$`tkeuggzp|oj  y(ϋ y(ϋy(ϋӇ6!mnfm N#~U˿~檩˿#aHGg0kxxwVyO>"ѠSؠ! 2!͠ >2: =2}ϋ}$(ϋ y(: =_Gn f wO F6w4~ ݖw F>:G!U~( =  ͟w: w: www:G!UV~(: :  :  ۯɯ2ww~ȯwn f E H6#~!!URu t V :0GOB8 y2:! < = :G!U!UV~(0O͟s r :( !7.> !2!%>O O!7!U͟V!~8O QW7PɯNF:!0 ) 0 ~=O 0"V ((*#"ra͡ :=23 ""(*#"ra͡ F6#66> !2!>O O!7" !:: w֣sW1̞̈́0\: ֣sW1̈́0͛( ~ ͟J}ãsW1̈́0͛ J}>2x((:Ͱ>> w(!j~;!~#fo: ͯ( ra!aK :CC*20Ͱ*#"(>ͰWy> ~~ F8 >C!#  C"! C"!>!>**#">**#"!>*>NF(90>2~S:> y~ͷ!&a BIOS error on : track- (A=abort R=retry I=ignore) S:"3>!*~G >V ͷ 3 ͡͡ ˯AIR ܚ>/<033O _ W{ ! a~AO !anf w>2y{W˛D~w F6#3 66~:˛ DD ?~w V ͛ *3 ~D !~w ̈́0͛( ~ ͟J[:G x͖~CsW1̈́0~ ;͛ J $66*:G x͖~ww! 62sW1̞̈́06gw(6\#~w#~w#~w! ~#fo~w~w#~w#~w sW1{#ޘPF80. 5"-floppy 1.2 MByte 1x20 MBytes winchester A. !j~;0: w!UVw]2o$ ]2"#{#ޘ1L -)E / /7P!#O E ̗̗̗*ė#"ėÖ!>0 5: ֖5Ö!4~ >#"2*"w!ROSÖ E E (E>:e˿2e>W(42*"r!R±SÖ*[ėR(FR0:vo(>:x˿2x*Ɨw#"Ɨ[ʗR[R *ʗ"Ɨ *ė|:ؕɯ! >(>!>>(>-/ɯ!> :co(=(y >@>P! y 4>8 y24 ](y, g(y.͊0:旷:(":( (2(((2x*ʗ[*ȗ~#R [ʗSȗ>3!(>#:w 5[!R S”>>> )(y 3(y͌?!旯(:w 5[!R S*6!6!~6O(*ė+"ė:vo([RZ >:xunction 30 (user function 8)xÒЕThis is a patch area reserved for inplementations of function keys, and other "hacking" in consoleinput Use Bios f yЇO_! F#N#~#fop |h!~0>_!~(1w#Fyw ~ Wyw W~柲w x > 0| )}0$_!y(A!7">CRT LPT CEN GRAPH SPOOL LPT1 LPT2 ! #2x38WK>z?؇!O ~7o##~#fo8WK"|(W!K>22>  > to retry CP/M Plus Version 3.0 - Jet-@  @ *E.| !̗"Ɨ"ȗ"ʗS!"ė>:x!d}2<<2!:*GG+!w#Ow### ~w#q# !!d|G!a!aCCP.COM-error. Press *&)~#fo~#fo2 2ͭ* "*"" ( !""*("*$"*&"!p}2_!h}2m2Z| **)֏ | Ïy2i&) ~#fo{!~2 !~#fo`C C C:2i`#z+n& ***)>ܦ| h&)))~&֏~ > wߏ͕&͏**)֏1Ðv L:(*[KS"C!^#V#{(++~2 y2+V+^` ***)0ͦ(l|9rbruڗu>2#×uo:#<o֊2#*!""++"29Cwt*{}<^#Vz!c!>c! Jwt*q~69r!͐=‡*":*}®:=t::<tsr>2*i^#V+ zd!K*}@r*)): K:) O "!w [O?WGzO:VxGyOGxwq*}}ʴ>2d:#ό>29x2~2#!   )xð*}*}"*x"xm*^#V* s#r**s#r*:Y4Y̓**~#ngr* s#r ^#Vooa##)o0"xx!"""XoC*~<΋*":!::9*"x"*"g*3:= :Oi :=H:Gi a6:G/O**W p:T=ҍ aʚ~Š6*:X)o!:T>qpk֊!:6>X*{Q:_2{2Ē"͂s"X~<Š#cdfg!"()*N!rk)o!N!a)oz<*)"!"n:X*:w:w#:w*2d*n}Dz̓¡>2uzͱԁ߀?q~¾¾ʈƈ>w͙=2͜qu:wÚs~̓ʑpá!6NwͧBpͧȍÚsgsrk͐-x͜qupͤqS)o_ͤq̓~?qw͐sv-x?qF͜qupN͆up# Þ͐*6!u¿?q~pv*6 zu>2zͱ݁ԁ߀ͷw*ouq͋t"@r6ȍ͚svXqͤp͋͗uwOq~<y:y g~w#w#6##)o͋t@r * g~?G++!o#~>T}! 6*r*#K"nG*~ xrk͐-xxą}v@r~7q~vv(r͚sSuʀwt: :<RsHͥo:>~c!o#~E^#V)G#~#~!~ b k##N#F#^#V#~#fo~ovv2{2g*wtʪҢÞ+}*#}o|g:On*s#r#w!~w/d~@w/d/Hͥo*e>=)_g:0k"ösk*w)*c)-x}ͤxÀuk*s"n:;:rk2͚qù~͚q~͚}/_|/*eW}_*c"e}o|g"c>2{—>2z—u͇wvͱ* «>2͙wBp+w҄:w͚sAsP{ 2W|>O2nvøn}Rx*e):rqz͚qc|q2ZrTr͐-xzxs3͗u@YsY̓YׁYͅ:߀zsAss҄:@҄@҄$w̓r͚Asq=y:n<~?¯kÃ?q~?ʾZrTr͐ڃ*>o"͒s"!su:Ouv"Ý}6w͚ ~2vAssv@NN~v$w̓W+wvwr̚sv$w̓rrͅ:r߀>2+wAs@2rk!Z2!"ösg:2Tr͐-x:ʹ>2<2x!w: z>2*6uvxsOq~<w:*)o@r uk:G*g`~!x_<_@*oyr<:/G?q~##~? 6Kr@?qF6##N6u2np##q:#*~wu>2n*p@r! ~*"vr@r*w# )o 6#͙́sNo#FxT]## #~ ȷ  *4# ' 4!o *~^ ^33G# Pv:dv6 y2@r !׉)o#w*~"uҀ!Fw䀨Ҁ̓Ҁ:wr̚s":>儯2r̓*~wćw"̀ott!~$6:03ssir"!~6*e>=)Q!QX@r~~ v>2n ~!!q#p#w2wW*er_3oҫn-!s:!xQt*x:n<œ~. ʩ~z.ʩ~Asnrkr##sn<}rk}z}c|N! ~态O>G~G!~G~o>_yG~.|°~! w:ck~s[~!x?[~! ~ʤ~͆u[~͗uP~P~vkqO-yxá~=y.:n<ʰ~z! Vq##~_@wډͶs:WM{ں}ʛ}>ú}Ͷs p>TJs:!ʷ}͞ox!}w4 }P|W|}P|nÂqnÂq*!!~~#~O~#Frs}O s#rp:(„}y==„}*!^W*y^#Vx7}=2wͼsկw#K}WK}*"Js pT͞o*:[}"+rsSXq:ڜ|qz:npʺ|!oʵ|>2}nͤp2|O pDM͸w}|>rk""2:2* ::}:29r:>:>*ڈ{>F6:_/G:ʧ{:ڨ{|O|ͤpG:_{OppzW{{|{:{*}|{BKNt{ z{yG:!{vkqz:nvknpvkpM{ڂq?{Ͷs p>T͓oÂq!">Âq:G:O:h{=27r{yy/W!:l{=y:n<>w##~2 z4~?zz̓¹z:2Xq!"*>o+"vs z*!b"uv": r#~?w#>r# Lz=J Lzvr wwȍbrn?q~O ͆uz†ywŒy~yèyyyy#y # xy ͗uyw yyyyyw@r ~wbr͐tÚssv!yxy>w~6:6~#+w#w+~;ywɯ2nrKrsyOFq-yyxly?qNpxug:ʓy~vu(r wȍvˆxwʀuHxÈxq2xąu x)o:@xOq~#w͚svʀuôx̓br_++V@r* )o͗uOs++rs~Gw#w* #~$%x+@r*9x>  #>? ;x*~ w-xxąvHx"0x *uuwĊwHxvEwuʀu@r~›w:w6¦ww͚s̋tȍvÇwPY*{zwBKNtwyʺw Ntwúw2: zv*~w uv*" zuvq2>vuʄw@r~kw:(rs~w*9x~wÊws~wԁ~wͅGrkxv~v:v2Ôvv##~v*$v*">2̀o2kºvtsʺv**virҺv@r:O~v2~WvWv:v2Ôvyʛv?ʔvx ʔv |v̷vvÔvN:rk:/GyOOqA +¬u ¢uy2:x¹uo&:W>OͫqE:ڟu?qN/*"y2ͦ>2u utrRsXstDM*w6# x u*ow**ws#r̀o*i6#6t*}"tsj@r*|<ď>!8u>8u> tu>nuͦtvr8u ~*ownuT] KKͦtt*w"wͦt"w@r :tNt N#Fyt*}|ht#ðt*ͫq# s6ot*qt@!"t@t**#"rt:&t2͒s:Èr0t:s+sÒsy<_W`iͫqDM*w ~btNtptwtDM*wes ^#V#~2o>âs9r͆r>!"*y³s*X*ÿs͂s"*g*K!n~<:wbr##>w#wpss> rk!~#22rrZw*q>ww:c r*#*is#r*rr:!:)qe:O!q*c:Oͫq}@r2ræn ~rán*g:o$*~Kr6?q~wKrw**i{#zirr+s{Oq:w:Ғq4~:w?qr##rp# äq |g}oìq*g #qG ¾q1q*qq:*w**rq*r> rk 2":O:G2!w*~zWw+ !qz?q#~*!* *Gq!Oq~2~mq͗uOx~tq>2?q:2g͝pDM*0MD"!*MD$:Oëq!N: «pG>O: pùp*p :pn` ~#foͤp2Op"}:O*n"!s#r#p*kN#F*m^#V#F*:O}|y9p*n+"p*n}|yPp#9p*n*DM"*ks#r*ms#r#pyox*kw#w*mw#w#w>2'åo2*OͶoyڲnòn*ͫq"q4#4#4o)o7qo o# o w#*oJ|^#V#"i##"k##"m###"o#"q##"!s )o*s!)o*|!6~o67rrorFile Exists? in Filenameònòn>2a."n:2:<:55;:2ɯ22{_zW{_zW )n7CP/M Error On : Disk I/OInvalid DriveRead/Only FileRead/Only DiskPassword E)"!z<~rks^#V#N#FxN:oʲk̀õk(f# Þkerky< k<k<%kzdvrkdͷdrk6rk9rkMDÌf:ok!6!hk: ʚente2 rk6e2n>rkz<*9iʌj^g:—j~x j)djfh:*nj:kjj>h*(n+"(nw++g2+nh2+ngfpff!" >2+n2*nhjfx.j#NzW:kfj:kh!2kWf!k5=j^ghx^jzh:kmj:*n;g#wOgf:kng͂f^g2kh¢iů͠egi:k!ڽi*(n~gg5WfèiifjfgMj2kͨgxi*(ni+wi"(njfheh i!%n"(n^gg-i:*ng$hPi:<\i:kW:g2kxMi jsi:<9i>2k:*n9ixg~+qj’ix2k:*g*&n~2+noh#"&n!+n6Mjh:kW:g2kx jͺg*(n+"(nw j i:kh>2*n2k:h*(n:kh+wh"(nͺg:G:k:+n̜f2k j j5hfg*(n~oh#"(nMjšh*(n~`hfUhogjh*(n~#"(nÑh!*n~6sh!+n6g:+n‚hxohڊg{2Ógf#wg:2.ng+g:.n2-n!%n"(n2*n!l"&n!*n~4:2-nfԂf:kGfͳgͨg^g2+n>2:2k*N#G2kg 2kgGH)o+6:2,n:!-n eg:,n!e+g*(n~Lg#Bgxzg:*n:kg*(n~ʓgOfrf e e! O(fÌf*(n~2*n*}ʷd!#¶f!""÷d:_:*(n#wfxH!l)o6"&n:!lk gx5~y f5 6yd(f^e@Of:=7f:ey e:Iff e:=fef:k zz#e͂f:!k e G:Ҏe>xʝeʝew>ɯw̩ez:»e!>wɯ:=zxzz:ke:G:=/eͽexe:Āy!4 šen!6@G:xed: Pe: wbMc bb 2c*7cw#6?#7c .,:;[]=<>|!?c]c45#Rca{ic_p# lc sc sc lc lcsc:¬bMcbAbbddT_0/2~"tC$`&GqFu@Iw7Dl#u@ pt6Y"@㴎ph!h-WXo٠P@0{4fFh!` :gPp@pikx8( @@!Y f Hd2@ dh4Qeq MNG#y\ (3xR"@r2G4 !@u9 So7bကZ %Ne'%G@)JrJt"!FZ!jzx !FK@)j to retry',0 SignOn: Db Cr,Cr,Lf Db 'CP/M Plus Version 3.0 - Jet-',0 End  ; CALLVERS program bdos equ 5 ; entry point for BDOS prtstr equ 9 ; print string function vers equ 12 ; get version function cr equ 0dh ; carriage return lf equ 0ah ; line feed org 100h mvi d,5 ; Perform 5 times loop: push d ; save counter mvi c,prtstr lxi d,call$msg ; print call message call bdos mvi c,vers call bdos ; try to get version # ; CALLVERS will intercept mov a,l sta curvers pop d dcr d ; decrement counter jnz loop mvi c,0 jmp bdos call$msg: db cr,lf,'**** CALLVERS **** $' curvers db 0 end  LOADER y; !91""|0!~ʞz=_: _* ""*og*%|}D S#N#F:ʒ#4ʝ^#V{‚:¿*.~w*DM!&_*.& >k s#rr+6.""1*D`.45. F.~. ^#Vx>`. s#rz 6#N#fi%$g1:=<@v_}v=p{_3;{<g"T=X3*j ~P#~R#~L{gbk#N#Fk$&Zcx {~#o}o1!;!"Ï:= w*wWx ~#&*.~s*"ѷ\ Cannot load Program$221282 COPYR '82 DRI <bHA$@DH   A@!" $$@2M ÙX X X S 1-! j 1".~2.~2 :Xck*kͮ  b < .~=>$.w.6#w.6#w.61.~  .~~w@.p T~º>+~.~~! yͮ Ë.~~w2g !PROFILE.S !+2 !  +~d {   O! w+w+: =w! 5 c ʋ  :p  m>> ͧ  N Ĩ –.~+w.~2  9 : ! ~##~ !7 : !Կ : x*l " !ZXچ! 6  zz: 6 : %2p  ͆ : =̀ 2r  DIR TYPE ERASE RENAME DIRSYS USER u"Q}:\=p:r Aæ R ÂN ʸ} !M 545 x ]  ̵ 6 : oG! ~怹>2M  xf>:ͦ ͤ ͍ ͤ f ¹2 lf   ͫR  L͞L I *  *  A }_Yl !ͮ ͒6 \&đ %* "l ͍  ûȷ45: w ? A I N   SUBMIT COM ! ͮ ! 6 #"l  !cͿ  O!:r :ͦ ͍ !~B I !pͰ ^#VCOM SUB PRL y!cͰ  î !" * %.2P#ͮ !g 4*l +"l ͷ 2 "Qx2Sl "Tx2V!q ~ :p ͆ .ڶ2* og$2| .w#w#w#w.~ .w#w~?w; ; ! ~#49 w#~$ A  < > _I  ! 6 ! ~#Ͱ 6 m   _  ! 6=  { *.pѯ:r x , \<=!Ͱ =ɯ2 \s 2 ! D ;! : .44 #4"l ~[* 2 a7 {7 w!Y #! *l "l " ~ U #D ]T!̷ 6*%.w#w!} 6 r 6 #w.6#6 #t#6.wo*.s#r.rͧ ̧ m . ^#V45+ w#w.f.5\A "l " l |F# !( | !( : x. +"l ! ͮ   ͮ ~!G8 * ~;#1 կA *l ~:g #I ѯ*l  *l ~0څ :҅ q X x<Ü AX QX X ~@#~:k #^ *jT~# ® wy#ù ! 4 : !Ͱ ~@*h~ yw y/w*hw*h~I E> ͦ > æ % 0  < : ~ȹͦ #* A !g ~6*  * >? A *l " ~0: :: q "l x~0 xG#Gs : &͘ ͤ &ͦ %˜ >  Ʌo$>?· !  > # ͮ x> # ~ Enter User #: $No File$ required$ERASE $ (Y/N)? $ Press RETURN to Continue $ (User 0)$NON-SYSTEM FILE(S) EXIST$: $$$ SUB\[c4H &?COOT S45H Q 2INISTMSe4UDHUU9KBDIRQSS dD%- IJLPTERRT`etA%= &PIAVECPPe4dT8 Q YCTC1VETT0h]M~ @oR;HܠbH a@  @9HP$`a@1a@2 s @ Z8#vWiλ m3@{śY@wi2@ mqPKU .y0Baa v0aalV[eZ`$ 3fP8@Lz:!`<~#3jvH@(ΠfLf{$ ">-EӠ,=H2F[e_aG6-0XB@)>"B q H A7eaЃD+#%C)0T2)8@ D @S(0TPd :`pCF@W( _0A`Y.D A(9ɖԀs K@O/3A p!0#?Y@>-YYRW+u! ??pd-Ӹ FF<?\Y7N3>Wndɺw\mJOua&&d%CA 4t1 9NfSd!p6MSqt41 3M3ņ@a7ye9F i7BI@c7fan8N ! M1n1 &pf0 3)@f:gCI  eܠL8^[ 18eѫNcC  Ҟ?} p 6q1l}Bn[>b4 +aaeio)ݥ vlV[lQV v0e*؍֧vGio;JxxLCﵰ b18eNg8;JA1 #< S H@> 2GH fAC2Bn>-0$ f0AC 0p2BrW1 >/>D9 l%LXYP<̖K7p<[@P"eXP ux`3%=C;1j{?!2ݐ+*H mFC`0B9!@|SBr>!ClZ2H@dk%x > QֹekVZkQU|2 ¬z "@%;C r3Aw$[j".ҝApG@ʟ0ۤuOZain &m˃EX[@wiHPF@Ґ*:ـx># _#- *ÀͰF"À SJN6SJB00 Xhr@`[Ͷ < .d a|0GY aܐHm@y\ !C& m1lD?0,1NgiH&Ԡ )f=[`! ޭ`_nk @CO@F`!``qYx'EyV~ A)^wƂ <;T "`$ `(P  @LECš( @X00U@x g8@8 G.' Q^ i Z-C b iq0P A @ s4e'%G@Lv$G)J{ ǟ)zjF)j=C000h. ; ; ; ; At entry: Hl = Address ; ; De = Size ; ; If Hl=0 restore to original default buffer ; ; which will be called on warmboot. ; ;------------------------------------------------------------; UFunc5: Djnz UFunc6 ;; If not UFunc5 SetLptBuff: ;; UFunc5 Di ;; Ld A,H ;; Or L ;; Jr Nz,SETLpt10 ;; Ld Hl,LpBuff ;; Use default buffer Ld De,LpRngBfZ-LpBuff ;; SETLpt10: Ld (LpRngIn),Hl ;; Ld (LpRngOut),Hl ;; Ld (LpRngBeg),Hl ;; Ld (LpRngBfZ),De ;; Ld Hl,0 ;; Ld (LpRngCnt),Hl ;; Ld A,5 ;; Out (Sio1AC),A ;; Ld A,(LptWr5) ;; Set Dtr,A ;; Ld (LptWr5),A ;; Out (Sio1AC),A ;; SET DTR Ei ;; Ret ;; ;------------------------------------------------------------; ; UFunc6 -- Copy Sio/Ctc init table from Bank 0 to Tpa. ; ; ; ; At entry: Hl = Destination address in Tpa. ; ; D = Device number. (0... ; ; At exit: A = 0 if Ok. ; ; A =-1 if device not found. ; ;------------------------------------------------------------; UFunc6: Djnz UFunc7 ;; Call CalcAdr ;; Jr C,UFunc6Err ;; Return if fault. Ld Bc,1*256+0 ;; Bank0 --> Bank1 Call ?XMov ;; (Does not affect De,Hl) Ld Bc,SioLen ;; Call ?Mov ;; Xor A ;; No error Ret ;; UFunc6Err: Ld A,-1 Ret CalcAdr: Ld A,D ;; Get device number Cp MaxDev ;; Ccf ;; Ret C ;; Add A,A ;; Add A,A ;; *4 for offset in Flag00 Ex De,Hl ;; Save Tpa address in De Ld Hl,Flag00 ;; Ld B,0 ;; Ld C,A ;; Add Hl,Bc ;; Point Flag0 Ld A,(Hl) ;; Scf ;; Bit 5,A ;; Using Ix ? Ret Z ;; No...error Inc Hl ;; Inc Hl ;; Ld A,(Hl) ;; Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Ex De,Hl ;; Hl=Tpa, De=Table And A ;; Reset carry Ret ;------------------------------------------------------------; ; UFunc7 -- Copy Sio/Ctc init table from Tpa to Bank0. ; ; ; ; At entry: Hl = Source address in Tpa. ; ; D = Device number. (0... ; ; At exit: A = 0 if Ok. ; ; A =-1 if device not found. ; ;--------------------------------------- ---------------------; UFunc7: Djnz UFunc8 ;; Call CalcAdr ;; Jr C,UFunc6Err ;; Return if fault. Ld Bc,0*256+1 ;; Bank1 --> Bank0 Call ?XMov ;; (Does not affect De,Hl) Ld Bc,SioLen ;; Ex De,Hl ;; Call ?Mov ;; Xor A ;; No error Ret ;; ;------------------------------------------------------------; ; UFunc8 -- Make a patch in console input routine. ; ; ; ; At entry: Hl = Address to patch area in Tpa ; ; If Hl=0, patch will be deactivated. ; ; At exit: De = Patch area address (in Bank0). ; ;------------------------------------------------------------; UFunc8: ;; Djnz UFunc9 ;; Ld A,H ;; Deactivate patch Or L ;; Jr Z,UFunc81 ;; Yes... Ld Bc,0*256+1 ;; Bank1 --> Bank0 Call ?XMov ;; Ex De,Hl ;; Ld Hl,ConInPatch ;; Ld Bc,100h ;; Jp ?Mov ;; UFunc81: ;; Deactivate patch Di ;; Ld A,0C9H ;; Ret Ld (ConInPatch),A ;; Ld (ConInPatch+2),A ;; Ei ;; Ld De,ConInPatch ;; Ret ;; ;------------------------------------------------------------; ; UFunc9 -- Stop Ctc Interrupt. ; ;------------------------------------------------------------; UFunc9: Djnz UFunc10 ;; Ld A,3 ;; Out (Ctc3),A ;; Ret ;------------------------------------------------------------; ; UFunc10 -- Start Ctc Interrupt. ; ;------------------------------------------------------------; UFunc10: Djnz UFunc11 ;; Ld A,0C5h ;; Out (Ctc3),A ;; Enable Ctc Ld A,240 ;; Out (Ctc3),A ;; Interrupt 10 Hz Ret ;------------------------------------------------------------; ; UFunc11 -- Assign List Device to a physical device. ; ; ; ; At entry: Hl = Device number (0...6) ; ; 0='CRT ' ; ; 1='LPT '  ; ; 2='CEN ' ; ; 3='GRAPH ' ; ; 4='SPOOL ' ; ; 5='LPT1 ' ; ; 6='LPT2 ' ; ; At exit: A = 0 successful assignment. ; ; A = -1 device does not exists. ; ;------------------------------------------------------------; UFunc11: Djnz UFunc12 ;; Ld A,H ;; Test if correct value And A ;; Jr Nz,Fkn11err ;; Ld A,L ;; Cp 7 ;; Jr Nc,Fkn11err ;; Add A,A ;; *2 Add A,A ;; *4 Add A,L ;; *5 Add A,L ;; *6 Name is 6 bytes Ld E,A ;; Ld D,0 ;; Ld Hl,InternTbl ;; Add Hl,De ;; Point to name in table Call GetDev ;; Ld A,C ;; Check if installed Cp -1 ;; Jr Z,Fkn11err ;; No...return error Fkn11_A: ;; Ld B,C ;; Get counter Inc B ;; Offset 1 Ld Hl,0 ;; Scf ;; Carry will rotate B times from Fkn11_B: ;; the left into Hl. Rr H ;; Rr L ;; Djnz Fkn11_B ;; Ld (@LoVec),Hl ;; Save bit vector Xor A ;; No error...return Ret ;; Fkn11err: ;; Ld A,-1 ;; Ret ;; UFunc12: ;; Not installed. Ret ;; InternTbl: Db 'CRT ' ;; #0 Db 'LPT ' ;; #1 Db 'CEN ' ;; #2 Db 'GRAPH ' ;; #3 Db 'SPOOL ' ;; #4 Db 'LPT1 ' ;; #5 Db 'LPT2 ' ;; #6 ;------------------------------------------------------------; ; GetDev -- Get Device Number. ; ; ; ; At entry: Hl = Pointing Device Name String (6 chars). ; ; At exit: C = Device Number. ; ; C = 0FFh if device does not exist. ; ;------------------------------------------------------------; GetDev: Ex De,Hl ;; De = Name string Ld B,MaxDev ;; Counter = max dev. ; Save it as a counter Ld C,0 ;; Later used as device number Ld Hl,@CTbl ;; Get Table Address in Hl GetDev1: ;; Push De ;; Push Bc ;; Push Hl ;; Ld B,6 ;; 6 bytes in name GetDev2: ;; Ld A,(De) ;; Cp (Hl) ;; Jr Nz,GetDev3 ;; Inc Hl ;; Inc De ;; Djnz GetDev2 ;; Pop Hl ;; Here on match Pop Bc ;; Pop De ;; Ret ;; GetDev3: ;; Pop Hl ;; Restore table pointer Pop Bc ;; Restore counter and device number Ld De,8 ;; Next Name Add Hl,De ;; Pop De ;; Restore string pointer Inc C ;; Djnz GetDev1 ;; Ld C,-1 ;; Return not found Ret ;; Page ;------------------------------------------------------------; ; ?Cinit -- Init character device. ; ; ; ; At entry: C = Logical device # (0... ; ;------------------------------------------------------------; Cseg ?Cinit: ; Ld Hl,CInitB0 ; Jp Bank0Call ; Dseg CInitB0: Ld A,C ;; No in A Cp MaxDev ;; Fit in system ? Ret Nc ;; No...return Add A,A   ;; Add A,A ;; *4 for offset in FlagTable Ld B,0 ;; Ld C,A ;; Bc=Offset in FlagTable Add A,A ;; *8 for offset in @CTbl Ld D,0 ;; Ld E,A ;; De=Offset in @CTbl Ld Hl,Flag00 ;; Add Hl,Bc ;; Pointing to Flag0 Ld B,(Hl) ;; B=Flag0 Inc Hl ;; Ld C,(Hl) ;; C=Flag1 Inc Hl ;; Ld A,(Hl) ;; Inc Hl ;; Ld H,(Hl) ;; Ld L,A ;; Hl=DeviceVector Bit 6,B ;; Using IniStm ? Jr Nz,CIni1B0 ;; Yes... Ld A,H ;; Test if valid CallVector Or L ;; Ret Z ;; No...return Jp (Hl) ;; Call and do return from subroutine CIni1B0: ;; Bit 5,B ;; Using Ix ? Jp Z,IniStm ;; No...Init dev. and return ;; Here using IniStm and Ix Push Ix ;; Save Ix Push Hl ;; Pop Ix ;; Ix=VectorTable Ld Hl,@CTbl ;; Add Hl,De ;; Ld De,7 ;; Add Hl,De ;; Hl=Pointing to baudrate Ld A,(Hl) ;; Get baudrate Cp 22 ;; Check if in table Jr Nc,CIni9B0 ;; No...quit Add A,A ;; Offset in LookUpTbl Ld E,A ;; Ld D,0 ;; Ld Hl,BaudTbl  ;; Add Hl,De ;; Correct address in BaudTbl Ld A,(Hl) ;; Get Ctc-byte Cp -1 ;; Valid ? Jr Z,CIni9B0 ;; No... Ld (Ix+CtcBaud),A ;; Set CtcCounter Inc Hl ;; Ld B,(Hl) ;; Get ClockMode Ld A,C ;; Get Flag1 And 00001111b ;; Get StopB/Parity Or B ;; Ld (Ix+SioWr4),A ;; Ld A,(Ix+SioWr3) ;; And 00011111b ;; Keep Bit0-4 Ld D,A ;; Ld A,C ;; And 11100000b ;; Get DataB/HandSh Or D ;; Ld (Ix+SioWr3),A ;; And 11000000b ;; Keep DataB Rra ;; Ld D,A ;; Ld A,(Ix+SioWr5) ;; And 10011111b ;; Keep Bit0-4,7 Or D ;; Ld (Ix+SioWr5),A ;; Push Ix ;; Pop Hl ;; Call IniStm ;; Init dev. Dec C ;; Point to data port In A,(C) ;; Clear input port In A,(C) ;; CIni9B0: Pop Ix ;; Restore Ix Ret Page ;------------------------------------------------------------; ; Patcharea for console input and console input status. ; ;------------------------------------------------------------; ;; Two useful jumps for the patch-code. Jp CiB0X ;; Jump to console input Jp CISTB0X ;; Jump to console input status ConInPatch: ;; Ret ;; Call from CiSt enter here Nop ;; Ret ;; Call from Ci enter here Db 'This is a patch area reserved for ' ;; Db 'inplementations of function keys, and ' ;; Db ' other "hacking" in consoleinput' ;; Db ' Use Bios function 30 (user function 8)' ;; Ds 115 ;; 256 bytes to use. Page ;------------------------------------------------------------; ; ?Ci -- Character input. ; ; ; ; At entry: B = Device number (0...) ; ; At exit: A = Character. ; ;------------------------------------------------------------; ?Ci: Call ConInPatch+2 ;; Maybe a patch CiB0X: Inc B ;; Device# (relative 1) Djnz CiDev1 ;------------------------------------------------------------; ; CrtIn -- Input from device CRT.  ; ;------------------------------------------------------------; CrtIn: Ld Hl,RngCnt ;; POINT TO THE RING BUFFER COUNTER. Xor A ;; ZERO Ei ;; CrtIn1: Or (Hl) ;; GET IT. Jr Z,CrtIn1 ;; LOOP FOR CHAR. Di ;; Ld A,(QFlag) Bit 6,A Jr Nz,CrtIn3 Dec (Hl) ;; COUNT DOWN Ld De,(RngOut) ;; GET THE OUTPUT-POINTER Ld A,(De) ;; A=OUTPUT CHAR (PARITY RESET). And A ;; Ld Hl,RngEnd ;; INC RING BUFFER-OUTPUT-POINTER Sbc Hl,De ;; IS THE BUFFEREND? Inc De ;; (INC) Jr Nz,CrtIn2 ;; NO...JUMP Ld De,RngBeg ;; SET BUFFER START CrtIn2: Ld (RngOut),De ;; SAVE THE POINTER. Ei ;; Cp 80h ;; Jr Z,CrtIn ;; And 7Fh ;; Clear parity bit. Ret ;; CrtIn3: Ld Hl,(LastPoint) ;; Ld (Hl),80h ;; Mark 'Taken' Ld Hl,QFlag ;; Ld (Hl),0 ;; Ld Hl,Last ;; Ld A,(Hl) ;; Ld (Hl),0 ;; Ei ;; Ret ;; CiDev1: Djnz CiDev2 ;; JUMP IF NOT DEVICE 1 ;------------------------------------------------------------; ; Lpt0In -- Input from device LPT. ; ;------------------------------------------------------------; Lpt0In: Call Lpt0InSt ;; CHAR IN SIO BUFFER? Jr Z,Lpt0In ;; NO...WAIT Di ;; Ld Hl,(LpRngCnt) ;; DECREMENT LPT INPUT COUNTER Dec Hl ;; Ld (LpRngCnt),Hl ;; Ld A,(LptWr3) ;; Bit 5,A ;; Jr Z,Lpt010 ;; IF NOT USING HANDSHAKE Ld De,(LpRngBfZ) ;; CHECK IF TIME TO RISE DTR And A ;; Sbc Hl,De ;; Ld De,8 ;; And A ;; Adc Hl,De ;; Jr Nz,Lpt010 ;; IF NOT TIME TO RISE DTR Ld A,5 ;; Out (Sio1AC),A ;; RISE DTR Ld A,(LptWr5) ;; Set Dtr,A ;; Out (Sio1AC),A ;; Ld (LptWr5),A ;; Lpt010: Ld Hl,(LpRngBeg) ;; COMPUTE LPT RING BUFFER END Ld De,(LpRngBfZ) ;; Add Hl,De ;; Ex De,Hl ;; SAVE IN De Ld Hl,(LpRngOut) ;; Ld A,(Hl) ;; GET NEXT BYTE Ei ;; Inc Hl ;; Ex De,Hl ;; And A ;; Sbc Hl,De ;; CHECK IF AT BUFFER END Jr Nz,NOTATLpEnd ;; Ld De,(LpRngBeg) ;; NOTATLpEnd: Ld (LpRngOu t),De ;; SET NEW OUTPUT POINTER Ret ;; CiDev2: If Not WrkStn Djnz CiDev3 ;; JUMP IF NOT DEVICE 2 ;------------------------------------------------------------; ; CenIn -- Input from device CEN. ; ;------------------------------------------------------------; CenIn: Ld A,Eof Ret CiDev3: Djnz CiDev4 ;; JUMP IF NOT DEVICE 3 ;------------------------------------------------------------; ; GraphIn -- Graphic keyboard input. ; ;------------------------------------------------------------; GraphIn: Ld Hl,GrCnt ;; POINT TO THE RING BUFFER COUNTER. Xor A ;; ZERO Ei ;; GraphIn1: Or (Hl) ;; GET IT. Jr Z,GraphIn1 ;; LOOP FOR CHAR. Di ;; Ld A,10000011B ;; Out (PioGBC),A ;; RESTART PIO INTERUPT Ld A,(QFlag) Bit 6,A Jp Nz,CrtIn3 Dec (Hl) ;; COUNT DOWN Ld De,(GrnOut) ;; GET THE OUTPUT-POINTER Ld A,(De) ;; A=OUTPUT CHAR (PARITY RESET). And A ;; Get rid of carry Ld Hl,GrnEnd ;; Sbc Hl,De ;; IS THE BUFFEREND? Inc De ;; INC RING BUFFER-OUTPUT-POINTER Jr Nz,GraphIn2 ;; NO...JUMP Ld De,GrnBeg ;; SET BUFFER START GraphIn2: Ld (GrnOut),De ;; SAVE THE POINTER. Ei ;; Cp 80h ;; Jr Z,GraphIn ;; And 7Fh ;; Clear parity Ret ;; CiDev4: Endif If NetWork Djnz CiDev5 ;; Jump if not Dev4 ;------------------------------------------------------------; ; SpoolIn -- Input from device SPOOL. ; ;------------------------------------------------------------; SpoolIn: ;; Ld A,Eof ;; Ret ;; CiDev5: Endif If Not WrkStn Djnz CiDev6 ;; Jump if not Dev5 ;------------------------------------------------------------; ; Lpt1In -- Input from device LPT1. ; ;------------------------------------------------------------; Lpt1In: ;; Ld A,Eof ;; Ret ;; CiDev6: Djnz CiDev7 ;; Jump if not Dev6 ;------------------------------------------------------------; ; Lpt2In -- Input from device LPT2. ; ;------------------------------------------------------------; Lpt2In: ;; Ld A,Eof ;; Ret ;; CiDev7: ;; Endif Ld A,Eof ;; Ret ;; Page ;------------------------------------------------------------; ; ?Co -- Character output. ; ; ; ; At entry: B = Device number (0...) ; ; C = Character. ; ; At exit: A = Written character. ; ;------------------------------------------------------------; ?Co: Inc B ;; Make device # (relative 1) Djnz CoDev1 ;; Jump if not device 0 ;------------------------------------------------------------; ; CrtOut -- Output to device CRT. ; ;------------------------------------------------------------; CrtOut: Call CrtOSt ;; Test CRT output status Jr Z,CrtOut ;; Wait for ready Ld A,C ;; Out (Sio1BD),A ;; Ret ;; CoDev1: Djnz CoDev2 ;; Jump if not device 1 ;------------------------------------------------------------; ; Lpt0Out -- Output to device LPT. ; ;------------------------------------------------------------; Lpt0Out: Call Lpt0OSt ;; Test LPT output status Jr Z,Lpt0Out ;; Wait for ready Ld A,C ;; Out (Sio1AD),A ;; Ret ;; CoDev2: If Not WrkStn Djnz CoDev3 ;; Jump if not device 2 ;------------------------------------------------------------; ; CenOut -- Output to device CEN. ; ;------------------------------------------------------------; CenOut: Call CenOSt ;; Test CEN output status Jr Z,CenOut ;; Wait for ready. Ld A,C ;; Out (PioAD),A ;; Ld A,01000000B ;; Strobe Out (PioBD),A ;; Ld A,01010000B ;; Strobe high Out (PioBD),A ;; Ret ;; CoDev3: Djnz CoDev4 ;; Jump if not device 3 ;------------------------------------------------------------; ; GraphOut -- Output to device GRAPH. ; ;------------------------------------------------------------; GraphOut: Ld Hl,GrOutCnt ;; Get output byte counter GrOutX: Xor A ;; Di ;; Cp (Hl) ;; CHECK IF ANYTHING IN OUTPUT BUFFER Jr Nz,GrOutW ;; YES Ld A,C ;; Out (PioGAD),A ;; ELSE JUST SEND IT Inc (Hl) ;; INC BUFFER COUNTER Ei ;; Ret ;; GrOutW: Ei ;; Ld A,GrOBufZ ;; Di ;; Cp (Hl) ;; Jr C,GrOutW ;; IF BUFFER FULL..WAIT Jr Nz,GrOutX ;; CHECK FOR Ift GrOBufZ NE 1 ;; IF OUTPUT BUFFER SIZE > 1 Inc (Hl) ;; INC BUFFER COUNTER Ld Hl,(GrInPnt) ;; Ld (Hl),C ;; SAVE OUTPUT BYTE IN OUTPUT RING BUFFER Ei ;; Inc Hl ;; Ld De,GrOutBufEnd ;; Ld A,E ;; Cp L ;; Jr Nz,GrOut20 ;; Ld Hl,GrOutBuf ;; SET POINTER TO START OF BUFFER GrOut20: Ld (GrInPnt),Hl ;; SET NEW BUFFER IN POINTER Else ;; IF JUST A ONE BYTE BUFFER Ld A,C ;; Ld (GrOutBuf),A ;; Inc (Hl) ;; Ei ;; Endif  Ret ;; CoDev4: Endif If NetWork Djnz CoDev5 ;; Jump if not device 4 ;------------------------------------------------------------; ; SpoolOut -- Output to device SPOOL. ; ;------------------------------------------------------------; SpoolOut: Call $Spool## ;; Ret ;; CoDev5: Endif If Not WrkStn Djnz CoDev6 ;; Jump if not device 5 ;------------------------------------------------------------; ; Lpt1Out -- Output to device LPT1. ; ;------------------------------------------------------------; Lpt1Out: Call Lpt1OSt ;; Test LPT1 output status Jr Z,Lpt1Out ;; Wait for ready Ld A,C ;; Out (Sio3AD),A ;; Ret ;; CoDev6: Djnz CoDev7 ;; Jump if not device 6 ;------------------------------------------------------------; ; Lpt2Out -- Output to device LPT2. ; ;------------------------------------------------------------; Lpt2Out: Call Lpt2OSt ;; Test LPT2 output status Jr Z,Lpt2Out ;; Wait for ready Ld A,C ;; Out (Sio3BD),A ;; Ret ;; CoDev7: Endif Ret Page ;------------------------------------------------------------; ; ?CiSt -- Character input status. ; ; ; ; At entry: B = Device number (0...) ; ; At exit: A =-1 & Nz-Flag if at least 1 char. available; ; A = 0 & Z-Flag if no char. available. ; ;------------------------------------------------------------; ?CiSt: Call ConInPatch ;; Check if patch in ConsoleInput CiStB0X: Inc B ;; Make device # (relative 1) Djnz CiSDev1 ;; Jump if not device 0 ;------------------------------------------------------------; ; CrtInSt -- Input status from CRT. ; ;------------------------------------------------------------; CrtInSt: Ld A,(RngCnt) ;; ANY CHAR IN THE BUFFER? Or A ;; Ret Z ;; NO...RETURN CrtInSt0: Ld A,(@QueFl) ;; Bit7 & Bit6 set in Bdos on Func11 and Func2 resp. And A Jr Z,CrtInSt5 Bit 7,A ;; Test Func11 or Func2 Ld A,(Last) Jr Z,CrtInSt4 Cp 'C'-'@' ;; Here on Func11 Jr Z,CrtInSt5 CrtInSt1: Xor A Jr CrtInSt3 CrtInSt2: Or -1 CrtInSt3: Ld (QFlag),A Ret CrtInSt4: ;; Here on Func2 Cp 'S'-'@' Jr Z,CrtInSt2 Cp 'Q'-'@' Jr Z,CrtInSt2 Cp 'C'-'@' Jr Z,CrtInSt2 Jr CrtInSt1 CrtInSt5: Or -1 ;; YES...SET FLAG Ret ;; CiSDev1: Djnz CiSDev2 ;; Jump if not device 1 ;------------------------------------------------------------; ; Lpt0InSt -- Input status from device LPT. ; ;------------------------------------------------------------; Lpt0InSt: Ld Hl,(LpRngCnt) ;; ANYTHING IN LPT BUFFER Ld A,H ;; Or L ;; Ret Z ;; If empty Or -1 ;; Ret ;; CiSDev2: If Not WrkStn Djnz CiSDev3 ;; Jump if not device 2 ;------------------------------------------------------------; ; CenInSt -- Input status from device CEN.  ; ;------------------------------------------------------------; CenInSt: ;; Xor A ;; Not ready Ret CiSDev3: Djnz CiSDev4 ;; Jump if not device 3 ;------------------------------------------------------------; ; GraphInSt -- Input status from device GRAPH. ; ;------------------------------------------------------------; GraphInSt: Ld A,(GrCnt) ;; TEST GR. CHAR. COUNTER Or A ;; Ret Z ;; RETURN NO CHAR Jp CrtInSt0 CiSDev4: Endif If NetWork Djnz CiSDev5 ;; Jump if not device 4 ;------------------------------------------------------------; ; SpoolInSt -- Input status from device SPOOL. ; ;------------------------------------------------------------; SpoolInSt: Xor A ;; No char Ret CiSDev5: Endif If Not WrkStn Djnz CiSDev6 ;; Jump if not device 5 ;------------------------------------------------------------; ; Lpt1InSt -- Input status from device LPT1. ; ;------------------------------------------------------------, Lpt1InSt: Xor A ;; No char Ret ;; CiSDev6: Djnz CiSDev7 ;; Jump if not device 6 ;------------------------------------------------------------; ; Lpt2InSt -- Input status from device LPT2. ; ;------------------------------------------------------------; Lpt2InSt: Xor A ;; Ret ;; CiSDev7: Endif Xor A ;; Ret Page ;------------------------------------------------------------; ; ?CoSt -- Character output status. ; ; ; ; At entry: B = Device number (0...) ; ; At exit: A =-1 & Nz-Flag if ready. ; ; A = 0 & Z-Flag if not ready. ; ;------------------------------------------------------------; ?CoSt: Inc B ;; Make device # (relative 1) Djnz CoSDev1 ;; Jump if not device 0 ;------------------------------------------------------------; ; CrtOSt -- Output status from device CRT. ; ;------------------------------------------------------------; CrtOSt: In A,(Sio1BC) ;; Read status And 00000100B ;; Mask Tx buffer empty Ret Z ;; Not ready...return Or -1 ;; Set ready flag Ret ;; CoSDev1: Djnz CoSDev2 ;; Jump if not device 1 ;------------------------------------------------------------; ; Lpt0OSt -- Output status from device LPT. ; ;------------------------------------------------------------; Lpt0OSt: In A,(Sio1AC) ;; Read status And 00000100b ;; Mask Tx buffer empty Ret Z ;; Not ready...return Or -1 ;; Set ready flag. Ret ;; CoSDev2: If Not WrkStn Djnz CoSDev3 ;; Jump if not device 2 ;------------------------------------------------------------; ; CenOSt -- Output status from device CEN. ; ;------------------------------------------------------------; CenOSt: In A,(PioBD) ;; READ ACK AND BUSY. And 00100001B ;; Cp 00100000B ;; READY AND NOT BUSY Ld A,0FFH ;; Jr Z,CenOSt1 ;; YES...JUMP Ld A,0 ;; SET NOT READY CenOSt1: And A ;; Ret ;; CoSDev3: Djnz CoSDev4 ;; Jump if not device 3 ;------------------------------------------------------------; ; GraphOSt -- Output status from device GRAPH. ; ;------------------------------------------------------------; GraphOSt: Ld Hl,GrOutCnt ;; GET OUTPUT BYTE COUNTER Ld A,GrOBufZ+1 ;; Cp (Hl) ;; Ld A,0 ;; MAYBE NOT READY Jr Z,GrOST2 ;; IF BUFFER FULL (NOT RDY) Ld A,-1 ;; ELSE READY GrOST2: ;; Or A ;; SET FLAG BITS Ret ;; CoSDev4: Endif If NetWork Djnz CoSDev5 ;; Jump if not device 4 ;------------------------------------------------------------; ; SpoolOSt -- Output status from device SPOOL. ; ;------------------------------------------------------------; SpoolOSt: Ld A,-1 ;; Or A Ret CoSDev5: Endif If Not WrkStn Djnz CoSDev6 ;; Jump if not device 5 ;------------------------------------------------------------; ; Lpt1OSt -- Output status from device LPT1. ; ;------------------------------------------------------------; Lpt1OSt: In A,(Sio3AC) ;; Read status And 00000100b ;; Mask Tx buffer empty Ret Z ;; Not ready...return Or -1 ;; Set ready flag Ret ;; CoSDev6: Djnz CoSDev7 ;; Jump if not device 6 ;------------------------------------------------------------; ; Lpt2OSt -- Output status from device LPT2. ; ;------------------------------------------------------------; Lpt2OSt: In A,(Sio3BC) ;; Read status And 00000100b ;; Mask Tx buffer empty Ret Z ;; Not ready...return Or -1 ;; Set ready flag Ret ;; CoSDev7: Endif Xor A ;; Not ready. Cause no Ret ;; more devices. Page ;------------------------------------------------------------; ; Interrupt Driven Routines ; ;------------------------------------------------------------; ;------------------------------------------------------------; ; KbdIrq -- Console keyboard interrupt service routine. ; ; Uses local stack in order not to interfere with ; ; the user program stack. ; ;------------------------------------------------------------; Cseg KbdIrq: Call BIOSINTENT ; Jp KbdGBIB0 ; Dseg KbdGBIB0: ;; Ld Hl,RngCnt ;; Hl --> NO OF CHAR IN BUFFER Ld A,RngEnd-RngBeg-2 ;; A = BUFF SIZE - 2 Cp (Hl) ;; Jr Nz,NOTSFULL ;; Ld A,(KbdWr3) ;; IF BUFFER SOON FULL Bit 5,A ;; Jr Z,NOTSFULL ;; IGNORE IF NOT DTR/RTS HANDSHAKE Ld A,5 ;; Out (Sio1BC),A ;; RESET DTR IF JUST 2 BYTES LEFT IN BUFFER Ld A,(KbdWr5) ;; Res Dtr,A ;; Out (Sio1BC),A ;; Ld (KbdWr5),A ;; NOTSFULL: Ld A,RngEnd-RngBeg ;; Cp (Hl) ;; IS BUFFER FULL? In A,(Sio1BD) ;; A = CHAR (CLR INTERRUPT) Ld D,A ;; SAVE PARITY BIT Jr Z,KbdIr3 ;; YES...JUST JUMP AND QUIT Inc (Hl) ;; INC CHAR-COUNTER And 07FH ;; MASK PARITY Ld (Last),A ;; Save last char KbdIr1: Ld Hl,(RngIn) ;; Hl --> INPUT Ld (LastPoint),Hl Ld (Hl),D ;; SAVE INPUT CHAR IN BUFFER INCLUDING PARITY And A ;; CLEAR CARRY BIT Ex De,Hl ;; SAVE INPUT POINTER IN De. Ld Hl,RngEnd ;; Hl=BUFFEREND FOR TEST Sbc Hl,De ;; POINTER AT END? Inc De ;; INC Jp Nz,KbdIr2 ;; NO...JUMP Ld De,RngBeg ;; SET POINTER TO BUFFERSTART KbdIr2: Ld (RngIn),De ;; SAVE THE POINTER. KbdIr3: Jp BIOSINTEXIT ;; Cseg ;------------------------------------------------------------; ; BiosIntEnt -- Save registers and Bank. Set Bank0. ; ; Using user's stack to save time. ; ;------------------------------------------------------------; BiosIntEnt: Ld (HlSave),Hl ; Ld (DeSave),De ; Pop Hl ; GET RETURN ADRESS Push Af ; SAVE REGISTERS. ; SINCE THIS IS AN INTERUPT ROUTINE CAN WE IGNORE TO UPPDATE ; @CBnk AND BnkMux Ld A,(MuxByte) ; GET CURRENT BANK MUX Ld (MuxSave),A ; AND SAVE If Not WrkStn Set 5,A ; Force Bank0 Else Set 0,A ; Force Bank0 Endif Out (BnkMux),A ; Jp (Hl) ; ;RESTOR BANK AND REGISTER RETURN FROM INTERUPT BiosIntExit: Ld A,(MuxSave) ; GET OLd BANK MUX SETTINGS Out (BnkMux),A ; Ld De,(DeSave) ; Ld Hl,(HlSave) ; Pop Af ; UnkInt: Ei ; BACK FROM INTERRUPT. Reti ; ;------------------------------------------------------------; ; LptIrq -- LPT PORT INTERRUPT SERVICE ROUTIN. ; USES LOCAL STACK IN ORDER NOT TO INTERFERE WITH THE ; USER PROGRAM STACK. LptIrq: Call BIOSINTENT ; Jp LptIrqB0 ; Dseg LptIrqB0: Ld Hl,(LpRngBfZ) ;; BUFFER SIZE Ld De,(LpRngCnt) ;; De = NR OF CHAR IN BUFFER And A ;; Sbc Hl,De ;; CHECK IF BUFFER FULL Jr Z,LpFULL ;; Ld De,5 ;; CHECK IF < 5 BYTES LEFT Sbc Hl,De ;; Jr Nc,NOLpHSH ;; IF NO TIME FOR DTR RESET Ld A,(LptWr3) ;; CHECK IF DTR/CTS HANSHAKE Bit 5,A ;; Jr Z,NOLpHSH ;; IGNORE IF NOT DTR/RTS HANDSHAKE Ld A,5 ;; Out (Sio1AC),A ;; RESET DTR IF < 5 BYTES LEFT IN BUFFER Ld A,(LptWr5) ;; Res Dtr,A ;; Out (Sio1AC),A ;; Ld (LptWr5),A ;; NOLpHSH: Ld Hl,(LpRngIn) ;; GET STORE POINTER In A,(Sio1AD) ;; A = CHAR (CLR INTERRUPT) Ld (Hl),A ;; STORE CHAR IN BUFFER Inc Hl ;; INC CHAR-POINTER Ld (LpRngIn),Hl ;; Ld De,(LpRngBeg) ;; COMPUTE IF AT BUFFER END And A ;; Sbc Hl,De ;; Ld De,(LpRngBfZ) ;; And A ;; Sbc Hl,De ;; CHECK IF AT BUFFER END Jr Nz,NOTLptEnd ;; Ld Hl,(LpRngBeg) ;; RESET POINTER TO BUFFER START Ld (LpRngIn),Hl ;; SET NEW RING POINTER NOTLptEnd: Ld Hl,(LpRngCnt) ;; Inc Hl ;; Inc RING BUFFER COUNTER Ld (LpRngCnt),Hl ;; LptXIT: Jp BIOSINTEXIT ;; LpFULL: In A,(Sio1AD) ;; Jr LptXIT ;; Cseg If Not WrkStn ;------------------------------------------------------------; ; PioGAI -- INTERRUPT FROM GRAPHIC TERMINAL. ; GRAPHIC TERMINAL OUTPUT INTERRUPT SERVICE ROUTIN. PioGAI: Call BIOSINTENT ; Jp PioGAIB0 ; Dseg PioGAIB0: Ld Hl,GrOutCnt ;; Ld A,1 ;; Cp (Hl) ;; CHECK IF ANYTHING TO SEND Jr Nc,GrOutI100 ;; IF NO Dec (Hl) ;; DEC BYTE COUNTER Ift GrOBufZ GT 1 ;; Ld Hl,(GrOutPnt) ;; Ld A,(Hl) ;; GET BYTE TO SEND Out (PioGAD),A ;; SEND THE BYTE Inc Hl ;; INC OUT POINTER Ld De,GrOutBufEnd ;; Ld A,L ;; Cp E ;; CHECK IF AT BUFFER END Jr Nz,GrOutI10 ;; IF NOT Ld Hl,GrOutBuf ;; GrOutI10: Ld (GrOutPnt),Hl ;; SET NEW BUFFER OUT POINTER Else Ld A,(GrOutBuf) ;; GET BYTE TO SEND Out (PioGAD),A ;; Endif Jp BIOSINTEXIT ;; GrOutI100: Jp Nz,BIOSINTEXIT ;; IF JUST A DUMMY INTERUPT Dec (Hl) ;; Jp BIOSINTEXIT ;; ; PioGBI -- GRAPHIC KEYBOARD INPUT INTERRUPT SERVICE ROUTIN. Cseg PioGBI: Call BIOSINTENT ; Jp PioGBIB0 ; Dseg PioGBIB0: Ld Hl,GrCnt ;; Hl --> NO OF CHAR IN BUFFER Inc (Hl) ;; INC CHAR-COUNTER Ld A,(Hl) ;; A = NO OF CHAR IN BUFFERT Cp GrnEnd-GrnBeg-2 ;; IS BUFFER FULL? Jr Nz,PioGB9 ;; Ld A,00000011B ;; Out (PioGBC),A ;; YES STOP PIO INTERUPT PioGB9: In A,(PioGBD) ;; A = CHAR (CLR INTERRUPT) Ld D,A ;; And 7Fh ;; Mask parity bit Ld (Last),A ;; Ld Hl,(GrnIn) ;; Hl --> INPUT Ld (LastPoint),Hl ;; Ld (Hl),D ;; Save input char in buffer. And A ;; Clear carry flag. Ex De,Hl ;; SAVE INPUT POINTER IN De. Ld Hl,GrnEnd ;; Hl=BUFFEREND FOR TEST Sbc Hl,De ;; POINTER AT END? Inc De ;; INC Jp Nz,PioGB2 ;; NO...JUMP Ld De,GrnBeg ;; SET POINTER TO BUFFERSTART PioGB2: Ld (GrnIn),De ;; SAVE THE POINTER. PioGB3: Jp BIOSINTEXIT ;; Endif Cseg ; TAKE CARE OF SPECIAL RECIVE CONDITION Kbd AND Lpt KbdErRq: Push Af ; In A,(Sio1BD) ; Ld A,30H ; ERROR RESET Out (Sio1BC),A ; Jr INTXIT ; LptErRq: Push Af ; In A,(Sio1AD) ; Ld A,30H ; ERROR RESET Out (Sio1AC),A ; INTXIT: Pop Af ; Ei ; Reti ; ;------------------------------------------------------------; ; Ctc Interrupt 10 Hz. ; ;------------------------------------------------------------; ClkIrq: Ld (StSav1),SP ; SPAR STACKPEKAREN Ld SP,Stack1 ; S[TT LOKAL STACK Push Af ; SPAR ANV[NDARREGISTER Push Hl ; If Not NetWork Ld Hl,Cnt10 ; LADDA 10-DELS-R[KNAREN Dec (Hl) ; R[KNA NED 1. Jr Nz,Clk2 ; HOPPA OM EJ HEL SEKUND Ld (Hl),10 ; S[TT 10 TIONDELAR. Ld Hl,@Sec ; R[KNA UPP REALTIDSKLOCKAN Ld A,(Hl) ; Add A,1 ; \KA MED 1. Daa ; JUSTERA BCD. Cp 60H ; 60 SEKUNDER ? Jr C,Clk1 ; NEJ...HOPPA Xor A ; NOLLA SEKUND Ld (Hl),A ; SPAR. Dec Hl ; PEKA P] MINUT. Ld A,(Hl) ; Inc A ; \KA MED 1. Daa ; JUSTERA BCD. Cp 60H ; 60 MINUTER ? Jr C,Clk1 ; NEJ...HOPPA Xor A ; NOLLA MINUT. Ld (Hl),A ; Dec Hl ; PEKA P] TIMME Ld A,(Hl) ; Inc A ; \KA MED 1. Daa ; JUSTERA BCD Cp 24H ; 24 TIMMAR ? Jr C,Clk1 ; NEJ...HOPPA Xor A ; NOLLA TIMME Ld (Hl),A ; Dec Hl ; PEKA P] ANTAL DAGAR Dec Hl ; F.O.M 1/1-78. (L]G-BYTE) Inc (Hl) ; \KA MED 1. Jr Nz,Clk2 ; EJ 256 ...HOPPA Inc Hl ; PEKA P] H\G-BYTE. Ld A,(Hl) ; Inc A ; \KA MED 1. Clk1: Ld (Hl),A ; SPAR A. Endif Clk2: Jp ExtMcl ; CHECK FOR BUFFER TIME OUTS IN EXTMEM Cnt10: Db 10 Page ;------------------------------------------------------------; ; Port Initzialisation Tables ; ;------------------------------------------------------------; Dseg VecSi1B: ;; CRT Db 3,Ctc1 ;; 2 BYTES TO CTC CHAN 1 Db 01000101B ;; CTC1: INT. DIS, COUNTER MODE, ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. CtcBaud Equ $-VecSi1B ;; Ix-index BaudB: Db 4 ;; GIVES 307200 Hz TO SIO1B. CTC1Vec: Db 0 ;; CTCINTERRUPTVECTOR. Db 11,Sio1BC ;; 11 BYTES TO SIO1 B/TERMINAL Db 18H ;; RESET CHANNEL Db 12H ;; Wr 2: SIOVec: Db 0 ;; INTERRUPTVECTOR Db 14H ;; Wr 4: SioWr4 Equ $-VecSi1B ;; Ix-index Db 00000000b ;; xx00xxxxb Db 13H ;; Wr 3: SioWr3 Equ $-VecSi1B ;; Ix-index KbdWr3: Db 00000001b ;; Rx enable. xxx00001b Db 15H ;; Wr 5: SioWr5 Equ $-VecSi1B ;; Ix-index KbdWr5: Db 10001010b ;; DTR, Tx enable, RTS, 1xx01010b Db 01 ;; Wr 1: Db 00011100B ;; INT ON ALL Rx CHAR (PARITY DOES NOT ;; AFFECT VECTOR), STATUS AFFECTS VECTOR. Db 0 ;; END TABLE. SioLen Equ $-VecSi1B ;; Table length VecSi1A: ;; LPT Db 3,Ctc0 ;; 3 BYTES TO CTC CHAN 0 Db 01000101B ;; CTC0: INT. DIS, COUNTER MODE, ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. BaudA: Db 4 ;; GIVES 307200 Hz TO SIO1A CTC0Vec: Db 0 ;; CTCINTERRUPTVECTOR. Db 11,Sio1AC ;; 11 BYTES TO SIO1 A/MODEM Db 18H ;; RESET CHANNEL. Db 2,0 ;; DUMMY INTERUPT VECTOR Db 14H ;; Wr 4: Db 00000000b ;; xx00xxxxb Db 13H ;; Wr 3: LptWr3: Db 00000001B ;; Rx enable. xxx00001b Db 15H ;; Wr 5: LptWr5: Db 10001011b ;; DTR,Tx enable,RTS,Tx CRC, 1xx01011b Db 01 ;; Wr 1: Db 00011000B ;; INTERRUPTS, Db 0 ;; END TABLE. If Not WrkStn ;; INIT EXTRA SERIE PORTS  VecSi3A: ;; LPT1 Db 3,Ctc4 ;; 3 BYTES TO CTC CHAN 0 Db 01000101B ;; CTC0: INT. DIS, COUNTER MODE, ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. BaudC: Db 4 ;; GIVES 307200 Hz TO SIO3A Db 0 ;; CTCINTERRUPTVECTOR. NOT USED Db 11,Sio3AC ;; 9 BYTES TO SIO3 A Db 18H ;; RESET CHANNEL. Db 2,0 ;; DUMMY INTERUPT VECTOR Db 14H ;; Wr 4: Db 00000000b ;; xx00xxxxb Db 13H ;; Wr 3: Lp1Wr3: Db 00000000b ;; Rx disable. xxx00000b Db 15H ;; Wr 5: Lp1Wr5: Db 10001011b ;; DTR,Tx enable,RTS,Tx CRC 1xx01011b Db 01 ;; Wr 1: Db 00000000B ;; NO INTERRUPTS, Db 0 ;; END TABLE. VecSi3B: ;; LPT2 Db 3,Ctc5 ;; 3 BYTES TO CTC CHAN 0 Db 01000101B ;; CTC5: INT. DIS, COUNTER MODE, ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. BaudD: Db 4 ;; GIVES 307200 Hz TO SIO3B Db 0 ;; CTCINTERRUPTVECTOR. NOT USED Db 11,Sio3BC ;; 11 BYTES TO SIO3 B Db 18H ;; RESET CHANNEL. Db 2,0 ;; DUMMY INTERUPT VECTOR Db 14H ;; Wr 4:  Db 00000000b ;; xx00xxxxb Db 13H ;; Wr 3: Lp2Wr3: Db 00000000b ;; Rx disable. xxx00000b Db 15H ;; Wr 5: Lp2Wr5: Db 10001011b ;; DTR,Tx enable,RTS,Tx CRC 1xx01011b Db 01 ;; Wr 1: Db 00000000B ;; NO INTERRUPTS, Db 0 ;; END TABLE. VecPio: ;; CEN Db 2,PioAC ;; 2 BYTES TO PIO A CTLR-REG. Db 00001111B ;; SELECT MODE 0 OPERATION Db 00000011B ;; INTERUPT DISABLE. Db 4,PioBC ;; 4 BYTES TO PIO B CTRL-REG. Db 11001111B ;; SELECT MODE 3 OPERATION Db 00101111B ;; BIT 7,6,4=OUTPUT ALL OTHERS INPUTS Db 00110111B ;; INTERRUPT CONTROL WORD = DISABLED Db 00000001B ;; MASK WORD, ONLY MONITOR BIT 0. Db 1,PioBD ;; 1 BYTE TO PIO B DATA Db 01010000B ;; Db 0 ;; End table VecPioG: ;; GRAPH Db 3,PioGAC ;; BYTES TO PIOGA CONTROL PIAVec: Db 0 ;; VECTOR FOR A Db 00001111B ;; OUTPUT ONLY. MODE 0 Db 10000111B ;; ENABLE INTERRUPT. Db 3,PioGBC ;; BYTES TO PIOGB CONTROL PIBVec: Ds 1 ;; VECTOR FOR B Db 01001111B ;; INPUT ONLY. MODE 1 Db 10000111B ;; ENABLE INTERRUPT Db 0 ;; End table Endif ;; REAL TIME CLOCK INITIALIZATION TABLE RestTbl: Db 2,Ctc2 ;; 2 BYTES TO CTC CHAN 2 Db 01000101B ;; CTC2: INT. DIS, COUNTER MODE, ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. Db 0 ;; GIVES 4800 Hz TO CTC3. Db 2,Ctc3 ;; 2 BYTES TO CTC CHAN 3. Db 11000101B ;; INT. ENABLED, COUNTER MODE ;; NEG. EDGE, TIME CONST. FOLLOWS, ;; COUNTING CONT. Db 240 ;; GIVES 20 Hz, WHICH IS DIVIDED ;; BY 2 (HARDWARE). ;; INERRUPT 10 times/second. Db 0 ;; End table Page ;------------------------------------------------------------; ; Variables, Buffers and Stacks. ; ;------------------------------------------------------------; Cseg MuxSave: Ds 1 ; HlSave: Ds 2 ; DeSave: Ds 2 ; Dseg LpRngCnt: Dw 0 ;; NO OF CHAR IN BUFFER LpRngIn: Dw LpBuff ;; POINTS TO INPUT PLACE LpRngOut: Dw LpBuff ;; POINTS TO OUTPUT PLACE LpRngBeg: Dw LpBuff ;; MAKE IT POSSIBLE TO SET BUFFER IN TPA LpBuff: Ds 20 ;; LpRngBfZ: Dw $-LpBuff ;; QFlag: Db 0 ;; Set on status call Func2 Last: Db 0 ;; Last char LastPoint: Dw 0 ;; Pointer to last char RngCnt: Db 0 ;; NO OF CHAR IN BUFFER RngIn: Dw RngBeg ;; POINTS TO INPUT PLACE RngOut: Dw RngBeg ;; POINTS TO OUTPUT PLACE ;; IF EQU BUFFER IS EMPTY. RngBeg: Ds 22 ;; KEYBOARD RING BUFFER. RngEnd Equ $-1 ;; If Not WrkStn ;; GRAPHIC INPUT GrCnt: Db 0 ;; NO OF CHAR IN GRAPHIC RING BUFFER GrnIn: Dw GrnBeg ;; POINTER TO GRAPHIC INPUT PLACE GrnOut: Dw GrnBeg ;; POINTER TO GRAPHIC OUTPUT PLACE GrnBeg: Ds 22 ;; GRAPHIC RING BUFFER GrnEnd Equ $-1 ;; ; GRAPHIC OUTPUT GrOutCnt: Db 0 ;; BYTE COUNTER Ift GrOBufZ GT 1 GrInPnt: Dw GrOutBuf ;; BUFFER IN POINTER GrOutPnt: Dw GrOutBuf ;; BUFFER OUT POINTER Endif GrOutBuf: Ds GrOBufZ ;; GrOutBufEnd Equ $ ;; Endif End SUdErH  5CLEAR$R e4T5H1MRLOGIN$GK@2 FqĠS+D8 |zD9|6`` huzӸp7NZ;[H\!` d/d$d4BHCLEAR$dErHLASTdtHѠSCSIe4T5HSEKTR$ԒUeu$ErIA!appnZ;[tn`S d$d4BHSCSIeu$ErIԒUeu$EuiA!appnt-n/nmӀqF`tl7N@ `h!#!F@"Lx+$+NPQe$TErIA!appnZ;[tn`C d$d4BHREADW$E454TԠdU%$"IF bD tC@T \ uHADq\ !b)o9 QTc7FSb6DC 2F$ EApd23a9y@f7M@L "Nd9Ng1r5 o:4R2# o: JAE3) 2F0  'Ch2bI@n7FS 6̆Pd "b)o9 Sg#IMADqr6L'c(r9@4U7#it2a2 tc4NgC)@!S@F' QLl3S@f0MS <  c)i;DCk S! 2F&aa6 Fy 0 #)QAEcym2 c)l7 Ph(n;M o3Lf`n4Q8 6Ng3 3BsNG#yHi I8T e4I@H!Hipi * ԓUdd$rIAjYtB0Z.w7Oװ w-Ӏ` n-f,n.`0F@22j!$x#'&F@2bz:Jq$h)SS d4TIDZFs$# L*ϠR` av` + EZ`(XZ.h D tl 7O!  s^wL??  @ iD!#!F2*z$i,$$+G2jz*a$i)U`eDDRIA!apN8ۣ` 6Hiʉ*Uee$erIA!ap? [p ź6ptn@Ѱ Ӑ!6HiH*䓀`E454]%QIFQ.zZV Ѱvnhn\,ڀ ,dq6nqu(3s@uPK7>8YP[r96- ź~)-,(}7Oq{L2 ̲f@yO`2X(?],ݨ2puڢ 8>2;AR|Fx12 x1=( =(x:] (8\< x12h2|!\ <2<x͛~2> ~2?:(9=()=(xF: :(%c: (:( (>!<6x uxf ((A8pA2A_} A2~2> ~2?=uxf 1uxf 1A8pA2PA_}?xf 1u!"B>2@!@4:?N͞>2A!A4:>(R^!FNͤy[*BDMͪ2=:=8xf 1u<2=:<(Ͳͮ(:>[*B"Bo&)))))))˿˯dD ͖_x25O> > >  > > >23:; C523*:3!W[__  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHp $ CP/M 3 COPYSYS - Version 3.0 Rev F. Modified for the JET Computer. $ ERROR: No source file on disk.$Function complete$ Source drive name (or return for default) $ Source on then type return $ Destination drive name (or return to reboot) $ Destination on then type return $ ERROR: Invalid drive name (Must be A through P)$ ERROR: Selected disk not on system.$ ERROR: Possible incompatible disk format. Type return to ignore.$ ERROR: Not compatible BIOS revision. $ ERROR: You cannot boot from second winchester unit. $ ERROR: Not compatible LOADER revision. $ This program cannot run on a WorkStation $Floppies only in this system. $Adaptec controller. $Xebec controller. $ Not compatible loader. Use command COPYSYS TRACK0A $ Not compatible loader revision. $ Not compatible loader. Use command COPYSYS TRACK0X $ You cannot set the loader on RamDisk. $ You cannot get the loader from this drive. $1_ ÕCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl];Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$::Enter today's date (MM/DD/YY): $Enter the time (HH:MM:SS): $Press any key to set time $Strike key to set time$ERROR: Requires CP/M3.$ERROR: Illegal time/date specification.$1_ 1_ ͓" * }! /* |! Hs1" 1X" :]C:]C* DM C  ͜o&" !]6m:] $ m:]S"͵.f  -=d >!e Җ. f -\! "{ *{ "} ! 6*} ~2 .*  -Ž͵.f   -§d >!e . f -! "{ *{ "} ! 6*} ~2 ͵͜o&" .* ## - )2m.  -*! 6 ̀ 2͵͜o&" .*  -ZI2ÂR͵1_ j͵v !_ q*_ &!a p+q*`  !c p+q*b    ͥ ͥ! q: <2 O*} : w! p+q* ~$7* : <2 O*} w* #" ! q: 0O! q: O8: O8! q* MF:! q* &! ͚ K8* &! ͚ M8! q* Mr/: ±: ¿! 6: <2 O*} ~2 : ͨ: 0 ! s+q! 6ÂG: Â: : H2 /Â: 0! wAÂͨ! : #~! HaÂ: ! s+q+q! : ʀÂͨ* M* ! s+q: 2 : * &) >; H: =: * ! ͚ ! s* ͜ " : ! q* &! ͚ ))))* &͜ } =2 : 2 .! 6;* & ~2 /* e2 /cNe2 : ! : HxÂ* &) : N_!m͹ ͒ * & N͏ * M* ͏_*{ #q#pO*{ w:;eO*{ w*{ ~: : :;e2 *{ 6-:;eO*{ w! s+q: ! ! 6N!m" : [!n"   h  +s#r! 4E! 6 >! һ: =2 ҝ! 6* &) : ͎ ! ҸÃ*{ ~2 *{  ~2 *{  ~2 *{ #^#V" +!͚ ! s@! 6: >;! H ! 6~* &) : ͎  ! s+4: O! DM  * M͗* M͗* Mr * Ma* Ma* MF! p+q!" * "{  "} *{ ~° ͼ! 6: *{ ~~H ! 6*} ~2 * &*} " Â! 62.* DM -  ̀  ͥ! 6>! B * &  Nͥ: <2  ! r+s+p+q+q! 6: =! ڊ * &* * &*  ʀ >: <2 W >_ogDM!>))덑o|gҳ =¡ DM!>)) = O{ozgi`N#Fogo&og_{_z#W01bCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]NAMES~VALUES~HELP~CON:~CONIN:~CONOUT:~LST:~AUX:~AUXIN:~AUXOUT:~CONSOLE~KEYBOARD~PRINTER~AUXILIARY~AXI:~AXO: &+07?GPXbgkXON~NOXON~NULL~50 ~75 ~110~134~150~300~600~1200~1800~2400~3600~4800~7200~9600~19200 #'+/49>CHMRWCOLUMNS~LINES~PAGESIZE[]=, NONE 50 75 110 134 150 300 600 1200 1800 2400 3600 4800 7200 9600 19200"$*&("*&(INPUT $OUTPUT $SOFT-BAUD$SERIAL $XON-XOFF $Error at the '^'; $Error at end of line; $Invalid number$End of line expected$Invalid delimiter$Invalid option$Baud rate can not be set for this device$Invalid physical device$Physical device does not have input capability$Physical device does not have output capability$Physical device does not have input/output capability$A NULL device can not be assigned to CONIN$Ambiguous assignments to a NULL device are not allowed$Physical Devices: $I=Input,O=Output,S=Serial,X=Xon-Xoff $  $ Bad Logical Device Assignment; $Physical Device Does Not Exist$ $File$Null Device$Current Assignments: $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $LST: = $Console width set to $ columns Console page set to $ lines $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $CONIN: = $CONOUT: = $AUXIN: = $AUXOUT: = $LST: = $Physical Device: $Baud Rate: $Characteristics: $PARALLEL$Requires CP/M 3.0$Device Reassignment Not Supported$Enter new assignment or hit RETURN $1b1b͏}0͏|HX "g:>gH|!"}Z :: H:H|b>g–X͘2e͘2f.x*gDM -²A/;SX }h2i !~6 *i& 6~A/!l6:i!l5*l&~ Nͬ *l&~ w:l<2l :i2dbv!q*&! p+q* ! s+p+q* : w#6*  * #" N#Fy ! q: 2!61!q:2!61!s+q:2!6*&"1!r+s+q:2!6*#s#r1!q:22!q!6*& > >*& :R :!4, !r+s+p+q+p+q͐ !#6 *~ *~2#* M# 2!'6:· :'ڪ ú * M# 2Õ v :24 :22&*~2$!'6*~2# *~ P *N! ** =2%!&D !'6!6:&!A :': !4# G *64 *:$w:}{+s#r͐ :z *}#"} !6:#2(O* ~2*&*: !(4*:(w*&*: ¿ *(&*~2Ñ *6*}~2 ̀ :2!!6*}#~2 !!4N* : !'6$ *!&*: $ !'6!4N*} ~2 *&*}~2 * M# 2:>!H} !4N*} ~2 * M# 2L :2}{#+s#r*}N# 2!« *}#"}Ð !)q:)a :){ :) :) H H!-s+q+p+q:-=2- **:,w**#"* !.q!76*b"3"5:e( !e6(*d&*e&͈!1s*d&͊!2s:.:.Ha *}+"}p :}++s#r !/6:1!/ږ *3"5*eMS !/4x *2MS :7ҭ Xó /X:e?Ҿ *.M!1 ^#VFXG UXG jXG |XG XG XG XG XG +XG aXG XG    ( !8q!06:8!0{ *3NH*3#"3!04\ !06:8!0ں *5}§ !76^Hì  H*5#"5!04ƒ !;s+p+q!"<!;>w *;M!<+s#r*<9+s#r!>q!"@}2?>!?3*?&m ~,*@DM*?; "@!?4*>M*@!Bq!C6>!Cp*B&))) *C& NH!C4H!Dq*D&)))  ~2FO>ҕ!F6!E6>!E*F&Ͳ *E& NH!E4š!Gq!I6*G&)))  ~2H2HIH!I4:H2HOH!I4:H2H'SH!I4:H2H>XH!I4:IR H!I4> XX:e2J(r!J6(*J&!͈!Ls+6!J6*K&))) ~  *KM? H*KMq H*KMX!K4+~!L Å!J4Ê!Qp+q:e2c(!c6(:c _!͈!es!c6>!c/*P)"P*c&S w!c4 !c6*c&))) ~X:cQX!c44:c2f!R6!d6+6>!c*c&S ~:f!cҝX%X !R6*cM? H!d4:e!d6 DX!c4k:b!R6OX:RTX `X"Ͱ"gxX*gDM$Ͱ"gX*gDM&Ͱ"gX*gDM(Ͱ"gX*gDM*Ͱ"gX*gDM !jp+q>!Ҁ>m !k6:=!kڹ*k&*i*k&m w!k4!k6*k&))) ~ !l6>!l *l&m *k&))) *l& !l4:k!k4>>þ>!sq*s&)))  ~2u!  ~2v!6!6::HHUZ :… :’ :°:u*s&)))  w::u*s&)))  w>!2:2:u2t2t *s&)))  :w.x*g -*s&" "wE.x*g -=S!{s+p+q>!{_ !"|!~6:{!~ڵ*y~0*y>9Hҏ !|ͧ*y~0_"|*y#"y:~<2~j>!| *|}!q*&!d͈!s^!dͲ:!s^! ͈!sn&ͫ:!s>!":0OH>!>#H?:0OH:0OH!6!6::HhZ :… ::ʝ hZ :}+DM*I=2*:: hZ :}+DM*I=2*S͘2e͘2f X:e!g:"O!C ^#VXUU$XUU/XUU:XUUEXU "+.7:*MͰ"*DM :2::Hқ*MS:::H:H: HI : !6!6UZ :O! ~2:J:- G:"= G*M!6#6>!p*&m 6:<2R:/:}+DMn2:— *&m 6:±*M#::H:*}~HH!6:*}~,H*}#"}:/UZ p::Hd*&)))  >\" $ a ::Hҩ*&)))  >¡& ( æ :":&H*&)))  > *M *&)))  >  *M !q*&)))  ~2*&)))  ~2 PX*M? cX*Mq vX!6>!:2¸*&ͫ DMX !6>!ڵ H:<2:X !6>! H:<2:<2m!p+q::H!6$!6*DMn2:< :J*M:\*M#a !6!6:€!"b"}Ï!"}+"b+~2dZ ::H:H!6!6::H:}+DMS@::S @:7:/4 @sS!p+q*~ *~ Hk*#"G*~w>>_ogDM!>))덑o|gҡ =^#V))) DM!>)) =¹_og^#V) _{ozgo&og_{_z#W~16OCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]ERROR: Illegal Option or Modifier. $File Spec Limit is $ERROR: Illegal Global/Local Drive Spec Mixing. $Requires CP/M 3 $ERROR: Options not grouped together. $ERROR: Illegal command tail. $No File $1616|27}27:70:7H҂0uÅl92888,T28!868͗6:8:80u:8@I #0uä9 ͉!8͎28*8M)*8"8!"88͎28!86>8͟6:8HҌ!\6?\͢28!"8:8n*8#"8Ͳ28V*8DM!*8) !ͭ6Ҍ!86!86!"8:8*88*886>~6:8:8/!8H͎ !86!96:8͌$e.8͎28×*8"8:o9/:8/HB0uv o&!8q*8& !8q:828!8681m!8q:80/>9!8/H!8r+s+q+p+q*8>w#6!"8}28:8!8!8:8O*8 N~>*8!8:8O*8 ~0_*8C66+s#r!886+s#r#4¸>!8s+p+q:85*8>X6+s#rL*8*8M!h6\6+s#r!8p+q!86:8!86>~6HҊ!8n6+s#r#4X:8!8p+q*8N#FM28O>Ҫ>!"8>!8*8M!8d6+s#r*88͸6s#r:88͗6:8H9 :8**8#~A!86!*8#~D*8##~IH9!76!*8#~D*8##~AHc!86!86!*8#~Eu!76!*8#~F«*8##~F’!86è*8##~U¥!86è? !*8#~G:8*8##~028*8##~0o&<6*8 ~0_!8s:8/>!8/H*88? !*8#~M*!86!*8#~Ny*8 ~XI!76v*8 ~P^!86v*8 ~Ss!86v? !*8#~R*8##~OHҞ!76!*8#~R*8##~WH!76!*8#~S *8##~Y!76 *8##~I!86 *8##~O!86 ? !*8#~X!76!? 86 *8#~Lz8:8 t*8#*8M8͖n>8͟6e? 8q? w? 6 *8#~Up 8:8:7 Hҥ? :88͗6Hm *8#~A*8##~LH!"8d :8 :8Ha :8 *8#~0287 *8#~0o&<6*8##~0_!8s:8/>!8/H[ *88^ ? d ? 8å6 *8#~D*8##~R~IHH3 8:8ª ? :88͗6H0 *8#~A*8##~LH !"8B86+s#r' *8#~A/>P/H$ *8#~A_8' ? 8ê 6 ? !860u:8  . *8# *8&C68  -o  *8&C68  ~  *8&C68  ~ H  *8&C68  6  *8&C68  6*8~  *8&C68 6 *8~= *8&C68 Hq:8<282 0 d[108:7!7/M !76#6:7!7/a !76+6:7!7| :8y !86Ä !76+6:8·  *8&C68  6 *8&C68 6!86>8͟6 !86:8=!8  *8&C68 ~  *8&C68 :8w *8&C68 ^8:8<28 t !86:8=!8t  *8&C68 ~ *8&C68 :8Hj 0u:8<28# >8͟6Š K_8>0!7 :8/ 8͗6 To&"8>8͟6 !"8 state8, char = $ state7, char = $ state6, char = $ state5, nxtchar = $ state4, char = $ state3, char = $ state2, char = $ state1, char = $ startstate, char = $!8p+q!86*8&*8~ ~ HҞ !84y :8!8q:8[:8]H:8(H:8)H:8=H:8,H:8H >>!8p+q!86*8#DMn 28O>G*8~!8*8&*86 *8& *8"8>!8Ҷ:8=O*8 N͢ :8!8O*8 N͢ HҶ*8+"8*8~<:8!8=Oo:8!8O*8 DM*8 -*8&*8~"!86:8<28L:8=O*8 ~ #:8=O*8 6!8p+q!86*8&*8~ʇ*8&*8~a/*8&*8>z/H}*8&*8~ *8&*8w:8<28/!8q:80/>9!8/H!8q:8A/>Z!8/H:8<28O*8 ~28*8& *8~28!8q*8 ͭ6:8<28O*8 :8w!8q!86*8M͠/:8$H*:8*8M͠*8M͈H:8_H:8$H:8!8/Hy*8M͸:8<28**8M͠*8M͈H:8_H:8$HҴ͸:8<28y*8 6*8 :8w:8!8q*8M͠*8M͈H:8*H:8?H:8_H:8$H!8q:8!8w*8M!8:8HҲ:8*¥:828*8&"8͸*8Me:8<28͸M!8:8z*8!8s>!86!8:8+ښ?:8<28*8!8sì*8M͸>!86> !8*8&*86 :8<28º:8::8A/>P!8/H :8A*8M͠:8$H:8_H:8*H:8?H/^*8~^>/k>:8.“͸*8Mғ!86/ғ>*8 6 *8 6@>!8q*8M͈/ҹ>*8M͈*8 :8/H:8H*8M͸*8 ~<*8 wù:8H:8DH:8BHM*8 ~!8J*8M͸*8 ~<*8 wM>*8 6 >!8q:8\h>͸:8\:8H*8 ~ Hҭ*8M͸*8 ~<*8 wk:8\:8H͸í:8\>*8 6͸>:828͵>:8=28͸!86 * Y/* ͦ/*>>:8,:8)H:8H]*8 6>v*8 >*8 w>> O>Ұ*8 >*8 w*8 > ҭ*8 6 >>:8,:8)H:8H*8 6>*8 >*8 w>>:8*8q#p>*8 6*8##q#p>:8?  *8M0:8K:8]‘͸:8,:8(H:8)H~͛:8Š/ð:8 :8,HҰ͸CC:8  *8M0:8:8 :8,H͸ :8)͸)>:8   *8M0:8<*8 q#p *8 6>-28Jʹ>:8c  *8M0:8(r͸ :8Ҏ*8Mq#p *8 6>-28Ҝ)>;:8Ҷ  *8M0:83:8!9w͸!9~,~ HC3!9~]0:8(:8,H:8)H͛3:8+3/3!9~=?M3>3:8Y"  *8M0:8u*8Cq#p *8 6>*8 :8wO>Ҋ>y28Ҙ͟>:8ұ4  *8M0:8):8H:8͸:8=28ñ:8[͸C:8 :8,H:8(H+:8($:8<28͸//:8EF  *8M0:8a *8 6*8/q#p>:8(v:8<28͸a*8 :8wO>ҋ>ͳ28ҙ͛>:8@»!86͸X  *8M0:8:8)>:8(:8<28͸/:8[͸Cͳ28͛>!8p+q*8"8*8##^#V"8*8 ^#V"8!86!86͸!86 *8 6*8 6*8 ~^*8ͭ6t͜28*8/ͭ6Š/28*8Cͭ6 C28*8Mͭ6¶M28*8 ͭ6 28*8ͭ628!86:8/*8 6*8##ͭ6*8##:86*8##q#p!8p+q*8"8*8##N#F*8##N#F*8##q#p$*8q#p Scanning Directory... $Out of Memory $Not Enough Memory $ !8p+q*8͙͐28u! 9r+s+p+q+q! 96:9=! 9$* 9&* 9>* 9&* 9>H~?H>! 94>*8>29!8f:8A>!"9*99*896>~6f>>8͟6:9H:8HҘ*98!96:8=!9 *9&C68 ~:8H *9&C68  ~:7/ *8# *9&C68  :7/!94:7!96!96> !9J*9&*8>!9w!94(:8!9wwO!9 "9O!9 ^#V"8!96>8͟6:9/H*8*8> *8#*8#HҼ!96*8 "9*8 ^#V"8t>8͟6>>*8~!ʡ/ҡ*8#DM!"99͢6>89͒6>*9"9"8*8#"8. *8#*8# -B*8>*8w *8 >w#6*8 w#6*8 w#6*8 w*8 w#6*8 w#6*9*8s#r:9#*8> *8~!  *8 ;2*9 9͗6́6> 9͗6+s#r. *9*9DM -*8 *9s#r74*8>147>. *8#*8# -F *8 *8 ~*8 w!96!96K2>~6~!96!96>!9Ý:9!9w҃*9&*8n&"9:9*9& *8~9W6+s#r>9͟6:9<29Ï>!9ҍ *8 ;2<_*9&C6*8 >;2H͈6<0 *8 *9&*9&C66*8 >;2H͈6 *8 q#p*8 *9&*9&C66*8 q#pR08͗6"9!96>!9 *9&9) >w#6:9<29¥ *"9y2!86!"8"8!\6?\͢29!"9*9~!!!96 !!96:9ʈ!:9o&"8:9?!*9&<6a "9*8~|!*8#"8*8~ f! *8 ~28|!'|!/|!l0ͻͲ29 !!:"8;͗6Ҥ!|0u Sort Stack Overflow $Not Enough Memory for Sort $ Sorting Directory... $! 9p+q*9))))*9)) *9) *9 *8 !$9r+s+p+q!%96> !%9m"*%9&*!9>2&9*%9&*#9>2'9Hf"!'9:&9!%94-">!-9r+s+p+q!l96**9"49*,9"69:l9 u$*l9&))49 ^#V"*9  ^#V",9!l95,9*9͒6r$**9".9*,9"09*,9**9r6)*(9N#F!"909.9͒6#*.9)*(9N#F!"8*8DM*9"5#*.9#".9*.9)*(9N#F!"8 #*09)*(9N#F!"8*9DM*8"s#*09+"09*09)*(9N#F!"8G#09.9͒6#*.9)*(9^#V"29*09)*(9*.9)*(9N#Fq#p*09)*(9*29s#r*.9#".9>!09ͪ6#*09+"09"*909͒6.9,9͒6́62$,9.9͒6)$!l94n&))49 *.9s#r*l9&))  *,9s#r*09",9o$09*9͒6i$!l94n&))49 **9s#r*l9&))  *09s#r*.9"*9÷"Ë":l9ʆ$!0Ë$!96*9"(9>8͟6Ң$(99͒6r6!8ͭ6$!0!"m9*8+!m9ͭ6$*m9)*(9*m9s#r*m9"m9$!0*8+p"!96 Name Bytes Recs Attributes $------------ ------ ------ ------------$ Prot Update $ ------ -------------- --------------$ Access $ Create $ Press RETURN to Continue $Sys$Dir$RO$RW$Arcv $ $Read $Write $Delete$None $ $Directory For Drive $ User $: $k$ERROR: Illegal Format Value. $ERROR: Date and Time Stamping Inactive. $Total Bytes = $ Total Records = $ Files Found = $ Total 1k Blocks = $ Used/Max Dir Entries For Drive $No File $'2v9:v9 ''2v9':v9+'u:8W'*8+:w9͈6W'%0*9#"9 '!w960!w94*8 ^#Vx9<0*8 {9o0 *8 ^#V~9<0*8#DM10*8 N#F'[1k00*8 DM10 *8 ~'%0'%00 *8 ~'%0(%00:8+( *8 ~"(%0((%0Þ( *8 ~@(A0C(0*8#~U(10X(0*8##~k(20n(0*8 ~҃(30Æ(0*8 ~қ(40Þ(0*8 >ͪ6l)0*8 ^#V"9 >(%0 )*9 >@(%0 )*9 > )%0 )&00*9 ~*9 ~H=)*9 DMͣ5C) &000*9~*9#~Hl)*9DMͣ5:8|) 0Æ):9چ),'&0:8AO0:0:7 ڶ)1&0*8& [1,'!"9!96!9p+q*p9*9&6>~6'**9*86>~6!t9ͭ6H*,'m),'*,'*9#"9:8AO0**09&0*9DM1ͻ*p9#"p9*t9#"t9!9s+q+q:9ր!9j*>:9ր!9*>>!9p+q*9 N*7M*7J* *9 N*7M*7J*H!\6?!96\͢29:95+:9o&"8> *8 ~H;2ᖟ/H,+',+*8#DM͂*,+*8#DM)Ͳ29*!96:9Ҭ+*9#"9*9)*(9N#F!"8*8:889͒6HҖ+*9#"9*9)*(9N#F!"8[+89͒6©+*9"8+*8"8*8:898͒6H+*8"8ö+:8+!96+!9698͒6i,*8 >ͪ6!7>͟6!7H*8#DM͂*Hc,_'*8#DM)*8 N#F'[1<&06++!96!"t998͒6q-*8 >ͪ6!7>͟6!7H*8#DM͂*Hk-*p9*9&6>~6X-*9*86>~6K-:8>t9͟6H>-,'m),' %00 %0,'3%003%0,'*9"9*t9#"t9H-,'*9#"9U-,'*9#"9[-0͎'*p9#"p9_'ͻ6+u,!96!"t998͒6d.*8 >ͪ6!7>͟6!7H*8#DM͂*H^.*9*86>~6A.:8>t9͟6HA.,'m),' %0[%0:8@.%0.%0,'3%0r%0,'*9"9*t9#"t9,'*9#"9͎'͟(*p9#"p9ͻ_'6+}-!"9"p9"x9}2z9o&"{92}9o&"~9298͗6"8*9 "9!"96+>!8ҵ.>&0u*8M!D/ ^#V͵*J/+J/:8&/:8:8@:8 H:8HH!9/r-#/]&0uA/:8!9>/r-A/j,J/...:8>!p9ͪ6H0*98͢6!8҆/ 0 0Ì/,','&0x91k0&0 {91&0*p9[1&0~91&0:8AO0:00*8[1/0K2#[1>p9͟6,0:8&0,'m)&0ͻ;0!o96:8;0,'!9r+s+p+q*9^#V"9*995s#r!9ͭ6n0*9##4!9r+s+p+q*9^#V*9DM<0*9##*9##~`iw!9p+q*9##~29*9##~w*9n6+s#r*9#:9w!9q*9&!9p+q*9  0 0 0!9p+q!96>!9/1*9&*9>O0!941 0!96> !9Z1*9&*9>O0!9491!9s+p+q+p+q>9͟61*9*96!9s*96"9PY! 6"9>~6!9#~Hһ101!96:90O0j1!9r+s+p+q*9##~2*9##N*9DM[1*9N#F'[1:2!969:9͟6+20*9&<6!9s 2*9N#F'[1!9q*9&*9~!9q*9&*9*9& *9N`ih6n&"9;2<o&"9;Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$!9q:9<29O*9 :9w!9p+q*9~$3*9:9<29O*9 w*9#"92!9q:90O2!9q:9O3:9O3!9q*9M3:2!9q*9&! 6K3*9&! 6M3!9q*9MJ3/2!9s+q:929:9*9&2) >;͟6HҸ3:9=:9*9! 6!9s*96"9:9!9q*9&! 6))))*9&6 }!9s+q:9!9!96N!m"9:9*4!n"999͒67499͒6+s#r!944!96 >!9Ҋ4:9=29l4!96*9&2) :96!9ͭ6҇4R4*9 ~29*9 ~29*9 ~29*9#^#V"9+!6!9s4!96:9>;!9ͪ6H4!96M4*9&2) :969͢6!9s+4*9~(5:9O!2 DM2 2*9Mo3*9Mo3*9MJ3 2*9M93*9M93*9~`5*9M3!9p+q!"9*9"9 "9*9~~Hҟ5͋4!96 5â5u!9p+q!96.*9DM9 -º59a5!96> !95*9& 9 N0:9<295i`N#Fog_og_ogDM!>))덑o|g26 = 6^#V))) DM!>))R6 =J6_og^#V) h6^#V|g}o r6_{ozgO{ozgi`N#Fogo&og_{_z#Wi`N#Fog\M!:K(Y! M}|x/Gy/O9zS)80# 8 _733< _7ɏ0#  _7> 2d8 dy0 0(O>02 8  y0 0(O0O "IѧR|2  (J/N)? J(j(N( n( O˯2J ((  :JJ{1|1W_0e. !0 )  |^#V#><*^VR89 * ^VR8)*^VR"* ^VR" 0*+"(0(Oy( 0~#O!M L!M~O#N#F#x( ~#~# `i!W[  (Y/N)? Y(y(N( n( O˯2J ((  :JYxH "! "i`)))#"A!6#A*+kbA+[!Aw#:=2: =2'd ;@B'd 1b  Serienr - Rev F. ;Aͪ:005 Arbetar endast under CP/M Plus Version 3.0. !6 w7:81  Arbetar endast under BIOS revision F.  %  Kan ej k|ras p} WorkStation. I:('!G~ (08 0 _0#z(S͕  Masterenhetens :( lokala namn (eller f|r A:) >~ >A˯A8Q8,  Ge en bokstav (A-P) eller . [2<A_I2=8.  Denna enhet finns inte i systemet. [  Master p} :<O  tryck >[E~(%  Det m}ste vara en floppy. [  Kopieenhetens :( lokala namn (eller f|r :<AB(A :) >~ y˯A8Q8,  Ge en bokstav (A-P) eller . Â!<   Inte samma enhet Â2>@2 =_I2?8.  Denna enhet finns inte i systemet.  _#  Kopian p} :>O  tryck >‚E~(U Det m}ste vara en floppy.   De tv} enheterna m}ste ha samma format Â~2A~G>_SHNFN*|(n fF(<"B}2O~N_P`h*SD{2NQ<:02Py"FKN"JE!"2"3͕  N{sta p} serienr 1113-([2*3}lg{ ) >%0  Felaktigt, f|rs|k igen͕2M!"26  Insert new diskett in drive :>O : and type >:?͂ >G (1  Enheten ej klar. Operation avbryts ê w(9  Kan ej skriva p} en skrivskyddad diskett ! ê >Wʃ :=>Wʃ :?O(O !'+O(| :  Kan ej skriva p} en h}rdsektoriserad diskett ê EE>2M27!͚*~X':=~X':?29d29:=29:?!74!O< :?:OG=272M:7~'ů29!75:M$  Disketten fullst{ndigt kopierad och seriealiserad *[R(v  Ej samma antal seriealiseringar!! Kontaka mjukvaru-avdelningen !! Antal seriealiseringar att g|ra *L  Antal gjorda seriealiseringar *L(   !44ª +4ª +4ê  Adressfel p} disketten. Kopieringen avbryts >2MÑ  Formaterar:7O:NG:9[Q*SqwG!rf"!͚>(2M  Skrivfel #:McEF!94Fd>2:  L{ser:9'2U[F!r(!r>">28:8!͚>!U(}2M  L{sfel #:Mc  p} sektorcE::=2:>2: (A=Avbryt,O=Omf|rs|k,I=Ignorera)>(~˯AʑI(O*[F"!8:N<4F( !94F  Seriealiserar !6q.6KJ:6(6(5(4("3(%*p x(Oͅ5 _ͅ4 Xͅ3 Qͅ2 Jͅ1 C:6 B!!/*#"26F!94Fq> x   Denna diskette g}r ej att serialisera, var god kontakta mjukvaru-avdelningen !! v  Skriver:9'2U[F!r(!r>">28:8!͚>!U(p2M  Skrivfel #:Mc  p} sektorcE (A=Avbryt,O=Omf|rs|k,I=Ignorera)>(~˯AʑI(O*[F"!8:N<4&F!94F  Verifierar:92U282L!84~*F+"!͚>!U(R2M:L(   *** L{sfel p} sektor >2L:8cE:8!N F!94F:?o,!g"S*Fr"Q!rfP>N >>w#2>N>28 >>w###:8w#:Pw#>w#>N >>w#:GO:FG  > >w#6>N!8~4!N8>Nö!f"S:*F"Q!rf(>>w#>>28>w###:8w#:Pw#>w# >>w#:GO:FG  > >w#>!8~4!N8>wT]   8>N w#  Sp}r :7c  Sida :9cbk)))>G+ S2S3#~ (:0 00T7*2:422"4+!2ͨ*2:422"4!4w0 +>w0+>w!>F#( yrfχ yrfχ!~O#~U~檩˿# kxxmt!90$`tkeugj SERIE COM YSTACKSLUT--> Hantering av bandstation (tapestreamer). ---------------------------------------- Bilaga till manualen f|r Jet 80 FTB. Jet 80 FTB har en inbyggd bandstation (tapestreamer), avsedd f|r s{kerhetskopiering av inneh}llet p} h}rddisken (winchestern) till bandkassett. Detta skall g|ras med j{mna mellanrum f|r att s{kerst{lla data om n}got oturligt skulle intr{ffa med h}rd- disken, t ex ett str|mavbrott vid ett ol{mpligt tillf{lle. Till bandstationen skall endast band av typen 'TEAC CT-500', (Jet Computer art. nr. 2225), eller likv{rdig bandkassett av annat fabrikat anv{ndas. F|rs|k inte anv{nda vanliga musik- kassetter, d} kvaliteten p} dessa inte r{cker f|r den h|ga packningst{thet av data som bandstationen anv{nder. OBS! Stoppa inte in kassetter med tryckkudde i bandstationen, d} detta kan f|rst|ra l{s- och skrivhuvudet i stationen! Till Jet 80 FTB medf|ljer ett program kallat WBU.COM, d{r WBU st}r f|r Winchester Backup Utility. Programmet anv{nds f|r att hantera bandstationen, och underl{tta hanteringen vid regelbunden s{kerhetskopiering. F|r att WBU skall kunna hj{lpa dig att h}lla ordning p} vilket band som {r det senaste, s} kr{vs det att datorns systemklocka (speciellt d} datum) {r ordentligt inst{lld. Innan du startar WBU, se till att datum och tid {r korrekta (kommandot DATE visar klockan, kommandot DATE SET {ndrar klockan). Den tid du st{ller in kommer att skrivas ned p} bandet d} du tar en s{kerhetskopia s} att du alltid skall vara s{ker p} vilket band som {r vilket. Starta d{refter WBU, som skriver ut en engelsk menytext p} sk{rmen. De olika alternativen i menyn betyder: B - S{kerhetskopiera h}rddisken till band. R - L{s tillbaka en gammal kopia fr}n band till h}rddisk. C - J{mf|r h}rddisk och band. H - L{s in och visa bandets rubrik och datum d} bandet skrevs. T - Str{ck bandet i kassetten. Q - Avsluta k|rningen. S{kerhetskopiering: ------------------- Alternativ B {r det som normalt anv{nds, dvs ta en s{kerhetskopia av h}rddisken. D} du valt detta alternativ (tryck B f|ljt av ), skrivs aktuell tid och datum ut, f|ljt av fr}gan: Enter tape label: H{r har du m|jlighet att skriva en rubrik som lagras p} bandet, f|r att du senare l{ttare skall komma ih}g i vilket sammanhang kopian togs. Upp till 39 tecken f}r plats i rubriken. Under inskriften kan du redigera texten p} vanligt CP/M Plus-maner. N{r du {r klar med rubriken godk{nner du den genom att trycka p} . D} vidtar sj{lva kopieringen, som b|rjar med att bandet raderas. ]terl{sning: ------------ Om n}got trots allt skulle intr{ffa med h}rddisken, m}ste en s{kerhetskopia l{sas tillbaka fr}n band. I vissa fall kan det vara l{mpligt att formatera h}rddisken f|rst (beroende p} felets art). V{lj sedan alternativ R. Programmet skriver ut f|ljande varning och fr}ga: This will destroy all data on winchester! Confirm with YES: Alla svar utom YES (eller yes) avbryter, och du kommer tillbaka till huvudmenyn igen (CTRL-C avbryter naturligtvis k|rningen). Svarar du YES (f|ljt av ) s} startar }terl{sningen. J{mf|r h}rddisk och band: ------------------------- Alternativ C j{mf|r (verifierar) bandet mot h}rddisken. Alla avvikelser rapporteras med meddelandet: Mismatch at block number: xxx Detta kan vara bra om du {r os{ker p} huruvida data skrivits ned riktigt p} bandet, eller om bandet {r gammalt och du beh|ver kontrollera att det fortfarande h}ller data som det skall. Det {r ocks} nyttigt att g|ra denna kontroll ett par g}nger d} bandet {r nytt, f|r att vara s{ker p} att det {r felfritt. Visa rubrik och datum: ---------------------- Alternativ H l{ser in och visar datum d} bandet skrivits, samt den rubrik du givit bandet d} det skrevs. Detta {r bra om du r}kat blanda ihop banden och vill vara s{ker p} vilket som {r vilket. Str{ck bandet: -------------- Alternativ T str{cker bandet i kassetten genom att spola det fram och }ter. Detta b|r g|ras p} en ny kassett, d{r bandet kan ligga luftigt p} spolarna. Om bandet inte {r ordentligt str{ckt |kar m|jligheten f|r fel vid skrivning och l{sning. Om du f}r problem med l{sning och skrivning p} bandet s} kan du prova att str{cka det f|rst, innan du f|rs|ker g|ra n}got mer med bandet. Har du r}kat tappa bandet i golvet eller p} annat s{tt utsatt det f|r fysisk }verkan s} kan detta hj{lpa till att 'f} liv' i bandet igen. Felhantering: ------------- I vissa fall kan fel uppst} under k|rning av programmet. Tre olika typer av felmeddelanden finns: 'WARNING', 'ERROR', 'FATAL ERROR' Dessa {r graderade efter hur allvarligt felet {r. Programmet talar ocks} om huruvida felet uppst}tt p} h}rddisken eller bandstationen. Efter ett felmeddelande skrivs texten: Press to continue. ut p} sk{rmen. Du f|rv{ntas nu trycka p} f|r att kvittera meddelandet. Exempel p} fel som kan intr{ffa: TAPE WARNING: No tape in drive. - Du har gl|mt att s{tta i ett band, alternativt inte satt in bandet ordentligt i bandstationen. ERROR: Bad backup format. - Det band som sitter i bandstationen {r inte skapat med WBU, alternativt helt tomt. TAPE WARNING: Tape attention. - Du har tagit ut och satt in bandet igen under p}g}ende l{s/skriv-operation. Detta klarar inte bandstationen, varf|r proceduren stoppas. \vriga felmeddelanden {r ganska sj{lvf|rklarande om man kan lite engelska. Observera dock: Om du f}r ett FATAL DISK ERROR, alternativt FATAL WINCHESTER ERROR, b|r du ta kontakt med din }terf|rs{ljare. en finns: 'WARNING', 'ERROR', 'FATAL ERROR' Dessa :+4442\0a0f0k0p0u0z0000#/#/#/////////ĩ,+:,= *F=+qN1,4O=2,=*F=~#"F=!5, () 'U ') )@ :<:=x,>=!]?G~µw#„,p, /U ,/@ #~µ~$w2'+"=>2=!"=ñ&>2=:=U - -~w#~d -~w,,͝-w͵,~Bدw#w#w#wU ~#~>-,"C=m-:>21=Ux¯x 20=*C="?= x4̓ :>"C=~w|21=m-x¯*C=-#~µ~@ w#s#r#*=s#r4͸K:?w/:<Ĩ/!<4~=Z.!]?~-!1>~-!@#]?~# . .. . -!V?p#"?=ͩ2'!5O"@ A."?=~w#~@k/~.#^#Vͩ.*= ͩ *={ĩn*F=ԃ +!"4="6=}2/=p!/!3=44!r?>͗;Z:3=8p!3=44!/!?>͗;Zʹ/*<|.:@<2[?2[?.!L//!O//*<|/>,vL:@<>,J:@<2[?2[?!_//ʹ//̓ͩ*>|,/F/ͩ+:@C/>vLKLNo Fatal error(s) Warning(s):=Gͩ./!//)ô/REPT/IRP/IRPC/MACROUnterminated /!//)> Z> Z:@<> J> J!/:@0"?%O;.0~<=r0:@<2@:@:@=2@<#~^0:@^0:@^07"?:?=2? &0*F=~ 0 0U 0"F=0>&2?>1&0:?0>&;:2?*@~ 1=1O+1 0x+~10:@*@~<1=11O+11 #1x+~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>)30R3=363D>3E>3 >0f3xG3x0:R3 f30O:f3>0f3y*{3w+"{36 *{32Ow+ ʏ3 3~3w+ ~3Ô2ʢ3w+22322{=*F=+~ 6 6 ʵ3õ3!=͍ 3#6 +>1&3:>1!  4>1!4r ?Stack overflow, try more P switches (:> O4"?/c4> \^4U :U H0ʄ4H=;: y4ɯ;:͞:!*#@*?!!44͍ 4:@¾4x4*?͔9͊02@*?r:5H=͈:3 4*@*@*?"?"@"@ bkë4:?2@+5ů2@@ :@ʊ5U :U O^5yf5y n5y@{5:@=2@:@<2@:@:<(:@#~>P)!ɷ/"@i2O:> ʰ5*@͊0y6+,ĝ5) <ĝw+:> G6G5͌2 D6>G65# <2@ 5 =6:@6G6 ;,76<36>76G67676 w+5:@G66+.0xĝ" @&i"?m6\4>Ô5^4*%@>2@3H0ʱ6 ʶ1;ʫ1'ʡ6"ʡ6>1Ç6G͕0 ʶ1ʛ6â6"%@;:͞:!*#@* @*?!!64>2@" @͍ 7:@6x 7* @##~#7+4r:47H=r:1:3 7* @4 bk6 ʝOJ) V7JG7> J> J:> @ ʝ2 @O ʄ7@ u77\4^4!H=: @O~ʥ7 #Ù7!ɷ #"?~(w/"@i2 ,7w+2@2@o&zo&|}|>o&|o&z26:6]||/g}/o#z /W{/_ DM!>25))#}o|g6 :5=25}:5=25}DM!>))U =M}}/o|/g#}|ʦ×|g}o{_ʞ||7g}o„{_ʞ)™}}o|gN#F# N#F#z{##^#VBK^#Vz#y####x#~#fo}|>?o&}|>o&{_ʞ|g}o|g}o~# x+!97~#F!S|7TN!"]!9!9^#V!$N! 9^#V"]!9!9^#V!$N*]!9^#VC N! 9N#F`i~!`i#DM+^C ͍!!! C N! 9N#F`i~? !9^#V`i#DM+^C ͍< ! !N! 9N#F!9^#V!PY=DM`i ͍ʆ ! ͍ʆ ! N!#!9^#V N! 9N#F!9^#V  !!9^#V`i  !`iN!9N#F! ^#V`i^#V+!! 9^#V!=,"! 9^#V`i~#fo#s#r+s!=N!!9^#V,"N! DM`iʌ!`i DM͍!l!N!9N#F!!9s#r`i~"! ^!=!!,"!9s#r! ^2!9~#foos#r! ^!="*! ^#Vs#r! ^#V"!! s!9^#VN! 9N#F! ^!=ʖ"! ^#V`i^#V͡! ^#V! ^(4͍ʖ"!`in&os!!9^#V!͍"!`in&=s!`is#r! s#r!`i~#"s#! ^#V!͍#!!9! ^(4͍}"!9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&os!9^#V`i~#fo#s#r+s!=N!9N#F! ^#V!͍ʞ#`i! s#r*|ʾ#*!9s#r*^#V"#! ^#V $!9s#rz#!! s#rÏ#!`in&os!9^#V! s#rN* $|($!<" $" $* $DM! 9^#V* $" $PYM$`i" $!* $* $ʌ$* $* $͡=! 9s#r9s#r#+^!0ͬ%9ͭ%!>9^#V! E!>9s#râ%.͍A&!!@9s#r#+^!0ͬA&9ͭA&!@9^#V! E!@9s#r%l͍ʁ&#+^!:9!T9~#fos#r99 'd͍ʳ&!:9!T9~#fo##s#r++^#Vs<9 'e͍&f͍&g͍&!9!T9~#fos#r͎<͎< '!:9!T9~#fo##s#r++^#Ve<9(!9!!>99)9l*!9!49s#r(!:998;<ʟ'!9! !>99d9)9 *!9!49s#r!-!69~#fo+s#rs'!9! !>99)9 *!9!49s#r(!9! !>99)9l*!9!49s#r(!9!!>99)9l*!9!49s#r(!:99͆9~#fo+s#r#!89~#fog)!B9^#V`iM6)!!69s#rÄ)!69~#fo#s#r!49^#V~)!69^#V!@9~#fo)!49~#fo#s#r+^`iMu)!D9~#)!>9~#fo+s#r#!89~#fo)! `iM)*`iM %N!9N#F!9^#V`is<)9!99A9:͆<$^+s! 9`is 6 #=ž+>6#=§+ : >+ A,[+@+a,{,`w# .+,+,w#+{o|g ,,w#+!!|a{ .51V!$bS.53!bS.52@Q.XRW@ .R.NE!7bS.54LV!tbS.56!RbS.55!bS.57!bS.58!bS.59V!bS.61!bS.60!bS.62N!!!`,q7!:o&=`,s!."$,!`,DM!",*,ʴ.`i^! ͍I-`i^! ͍Q-`i#DM--`i^zʴ.`i^!>͍r-!Æ-`i^!<͍e.!`i#DM^! ͍¥-`i^! ͍ʨ-Æ-`i`i#DM~-`i^! ͍-`i^! ͍-!`i#DM+s-í-2|.!͎0.!ͮ0͍b.!.!7!Q8!.!Q8! 8!!(4! .ñ.`i*,#",+)$,s#r`i#DM~ʱ.`i^! ͍Ÿ.`i^! ͍ʮ.!`i#DM+sñ.y. -!$,*,ͮ.Can't open file for redirection: Nb!! 9~#/! /K7A+A:$$$.SUBN!"!N!ɢbS.98!bS.97!bS.99!bS.100!bS.101!.102! bS.82abSMAIN_zY bS.104!& bS.103!b105!bS.106Y!bS.108!bS.107@R.LE!obS.9Y!^bS.111!lbS.110R.GEZ!bS.113!xbS.11con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:N!9^#V!!9^#Vͮ0N!!!9s#r0!9~#fo#s#r!9^#V! 1nf/͍ 10!"!!DM1`iDM`i~#=1!9^#V`i^#Vͭ7=11! ^#V!9^#V!=#!9s#r!9^#V!=ʄ1n&u|„1!"!!9^#V!=ʫ1n&u|«1!"!! ^#Vsrn&un&u!4ut!9^#V!9^#V!9^#VnfM! 9!2!!9^#VN! 9^#V!62! 9^#V! @2!"!! 9^#V)))DM! ^#V! ^#VM! 9s#r!! s! s! s`is!/! s#r! 9^#VN!,/DMì2`i&DM`i\02!% ^z2ä2!"!!9^#V͋+2!"!!9^#V!=3!R+!R+͍I3!9^#V!=<3!R+͍F3!"!i3!9^#V!=͍i3!"!!!! s#r!# s!$ s`i!9^#V!s#r!9^#V!=#!% s!=3!3!9^#V!s#r3!3!9^#V!s#r!N!!9^#V!%s!N! 9N#F!R+!!% s!N!/466N! 9^#V!M4! 9^#V! W4!"!! 9^#V)))DM!9^#V!9^#V! ^#V! ^) 4^#VMN!DM!9^#V$~4n$&!͡DM!9~#fo4!9^#VBK!9^#Vͯ54!!9^#V`i͡!9s#rz]5!9^#V!9^#V`i7!9s#rz]5!9^#V!9~#fo͑͡PY!9^#V!͑PYDM`i!9~#foʦ5!9^#V`i͡!9^#V`iͯ5ʦ5`i!9^#VN! 9N#F!!R+!!R+"͍5*͍6!"!!!͑76*|6!!9^#V!9^#V!$ ^!q7!"R+"|I6!!$ ^!9~#fo=!$ sz{6`i!~#fo#s#r!N!9N#F!Û6#!9~#fo6`i#DM+^!9s#r!9^#V! ͍6! !9^#VR+!9^#V!9^#VR+Ô66!76"*9!"9*7@7*7!427#4*;+";}7o&"*;N!9!29^#V͋+!9!R+! 9F+N+V+^+~+ngxʏ7w# Â7!9^#V#N#F#nxʫ7s# à7!9^#V#~#fox777# ý7!7!}!}!9^#V#~#fox8~8# 7!9~#fo 8#8}!9^#V#^#V#N#Fý7!9^#V#^#V#N#F7!9^#V#~#fox8~r8# c87!9^#V#^#V#N#Fc8!9^#V#n~ʥ8ʫ8#Ø8!|!9^#V#n8#þ8xʥ8 +~8ë8Y!9^#V!Ίb`i)!!*9!*w#w#w#w*~#~#~#~"8*V+^+V+^*8"8*s#r#s#r*8**""*>w#j9*~5<#y9*<=ɯ<**###99ì99چ9Š9+®9**#9**#9**#9**# :**#:*~/w#/:*~?G*^#V#~#fo))T:#L:DM*s#r#q#p*~?W*###~:~w+}:y:7~w+:‹:~# :Og9*8͝:y28*8͝::828;8*w#::8d9*8͝:y28*8͝:;8*w# ;:8d9!8w#";> 28!8~w#3;O8!8#H;yc;!84!85-;!85ʕ;!8~w#p;O8!8#ƒ;yc;W;8!8#ž;*8~#±;*8~#;!8w#;> 28!8~w#; <8!8#; <;!85;*8w#<͎95G>y>py>yxoWg^#V#s#r#}os#r#6s#r:ħ>y>(>y!H!"H:=2*~#"o&!>ž:8Ox84*Hw#!ħR !"H x M:7O>0y xM͵<-!:7o&,!:7o&,>-͵<-!:7o&,!:7o&,>-͵:o&|a:7o&,ͤN7:o&:8o&,͵:7o&,ͤj!:8o&,:7o&,ͤ¨Ñ! 9^#V:8o&,͵!! ͚!!͚!!͵$:o&| !}2!!9s'!9n&#s+!9^!.ʚ!!9s!!9s#r_!9~#fo#s#r+!9~#Z:o&|!0!9s#r*Zʒ!"l!9^!;s:;o&:;o&:;o&!9n&#s+:;o&$!9^!^:;o&^:o&zo&|@}|>o&|o&z2Y:ķ||d/g}/o#zr/W{/_rDM!>2))҅#}o|gҝ :=2}}:=2}}DM!>))Ҽ =´}}/o|/g#}| |g}o{_|}|7g}o{_)}}o|gN#F# N#F#z){-##^#VBK^#VzS#yM###;#xH#~#fo}|>?o&}|>o&{_|g}o}|g}o~# x’!9~#­!|7͵!"!9!9^#V!?͵! 9^#V"!9!9^#V!?͵*!9^#Vͨ͵! 9N#F`i~\!`i#DM+^ͨY!2!! ͨ͵! 9N#F`i~ʤ!9^#V`i#DM+^ͨʡ!v!͵! 9N#F!9^#V!PYͤDM`i ! [![͵! !9^#V[͵! 9N#F!9^#V[.3!!9^#V`iu[.X!`i͵!9N#F! ^#V`i^#VZʐ! 9^#V!ͤ͑! 9^#V`i~#fo#s#r+s!ͤ͵!!9^#V͑͵! DM`ih`i DM͵!9N#F!!9s#r`i~! ^!ͤ6!͑!9s#r! ^k"!9~#fos#r! ^!ͤ*! ^#Vs#r! ^#V"!! s!9^#V͵! 9N#F! ^!ͤ! ^#V`i^#V! ^#V! ^z$!`in&s!!9^#V!4!`in&ͤs!`is#r! s#r!`i~#E! ^#V!~!!9! ^z$!9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&s!9^#V`i~#fo#s#r+s!ͤ͵!9N#F! ^#V!`i! s#r*|#*!9s#r*^#V"J! ^#Vn!9s#rzJ!! s#r!`in&s!9^#V! s#r͵*|‰!,""*DM! 9^#V*"PYhʮ`i"!**i**ͤ! 9s#r,ʥ! 9^#V*"`i͵! 9^#V"!9!9^#V!!?!*s͵! 9^#V*#"+s!ͤ͵!N9N#F!P9^#V#+^zQ%F!!9s!!D9s#r! !B9s#r!!@9s#rn&-!!D9s#r#+^0!0!B9s#r!!>9s#r#+^!0.9.!>9^#V! ͬ!>9s#r.ʉ!!@9s#r#+^!0ʉ9ʉ!@9^#V! ͬ!@9s#rEl#+^!:9!T9~#fos#r=)P)hd!:9!T9~#fo##s#r++^#Vͭ,P)hefgE!9!T9~#fos#r,,h!:9!T9~#fo##s#r++^#V͟,P)!9!!>9=)c)ʹ!9!49s#r9!:9=)()u,!9! !>9=)͞)c)R!9!49s#r!-!69~#fo+s#rs !9! !>9=)c)R!9!49s#r9!9! !>9=)c)ʹ!9!49s#r9!9!!>9=)c)ʹ!9!49s#r9!:9=),!49s#r](!89s#rQeʍ!Ð!!B9^#V!ʧ!ï!B9^#V!9! 9,,,!9! 9!49s#r](!89s#r!!@9s#rQ!:9=),!9!69s#rs93ondu x3sYe{f{c!9!49~#fo!89s#r!89^#V!@9~#fo/t!@9^#V!89s#r!D9~#ʯ!>9~#fo+s#r#!89~#fo/ʯ!B9^#V`iʹ~!!69s#r!69~#fo#s#r!49^#V~ !69^#V!@9~#fo. !49~#fo#s#r+^`iʹý!D9~#C!>9~#fo+s#r#!89~#fo/C! `iʹN`iʹU͵!9N#F!9^#V`iͭ,c)!9=){)#+,^+s! 9`iͭ,͏)=)*P)ͮ)h͵!9N#F!9^#V! 9=)()u,j! 9=),ͤ! 9!9=)()͠*()%*P)`iͭ,c)!9=){)#+,)^+s! 9`iͭ,͏)=)*P)!9=)c)R!9*lÉ͝͝͝*DM*o&͝ͻo&͝**+++*DM*!9N#F#^#Vkb6#> 6 #=>6#= : >" A\[@a\{\`w# .=V%cw#&{o|g Vcw#G!!|a{ ͵!!!='!:o&ͤ=s!Q "!=DM!"*.> `i^! `i^! `i#DM÷`i^z> `i^!>!`i^!<!`i#DM^! /`i^! 2`i`i#DM~o`i^! ]`i^! l!`i#DM+so7k"|ʎ! Ü!!!R !8(!ͣ(!t !ͣ(!](!!z$! v ; `i*#"+)s#r`i#DM~; `i^! ) `i^! 8 !`i#DM+s;  ê!* v Can't open file for redirection: ͵! 9~#ʐ ! ͝'͉A:$$$.SUB͵!"!͵!con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:͵!9^#V!!9^#V!͵!!!9s#r:!!9~#fo#s#r!9^#V! .\!nf f!!!!"!!DMv!`iDM`i~#ʗ!!9^#V`i^#V'ʗ!n!! ^#V!9^#V!ͤ#!9s#r!9^#V!ͤ!n&u|!!"!!9^#V!ͤ"n&u|"!"!! ^#Vsrn&un&u!q$ut!9^#V!9^#V!9^#Vnfʹ! 9!.b"!!9^#V͵! 9^#V!."! 9^#V! /ʚ"!"!! 9^#V)))DM! ^#V! ^#Vʹ! 9s#r!! s! s! s`is! ! s#r! 9^#V͵!DM#`i&DM`ih!#!% ^z+#"!"!!9^#VF#!"!!9^#V!ͤ`#!͚!͚ʣ#!9^#V!ͤʖ#!͚ʠ#!"!#!9^#V!ͤ#!"!!!! s#r!# s!$ s`i!9^#V!s#r!9^#V!ͤ#!% s!ͤ$!N$!9^#V!s#r0$!4$!9^#V!s#r!͵!!9^#V!%s!͵! 9N#F!͚!!% s!͵!͵! 9^#V!.Ÿ$! 9^#V! /ʩ$!"!! 9^#V)))DM!9^#V!9^#V! ^#V! ^)^#Vʹ͵!DM!9^#V$~J%n$&!DM!9~#foi2%!9^#VBK!9^#V&J%!!9^#V`iu!9s#rzʯ%!9^#V!9^#V`iT'!9s#rzʯ%!9^#V!9~#foPY!9^#V!PYDM`i!9~#foh%!9^#V`i!9^#V`i&%`i!9^#V͵! 9N#F!!͚!!͚"<&*W&!"!!!'c&*|c&!!9^#V!9^#V!$ ^!'!"͚"|ʛ&!!$ ^!9~#foͤ!$ sz&`i!~#fo#s#r!͵!9N#F!&#!9~#fo.H'`i#DM+^!9s#r!9^#V! 0'! !9^#V͚!9^#V!9^#V͚&͝!Y'͝"*!"*’'*!4„'#4*+"}Z'o&"*͵!9!29^#V!9!͚! 9F+N+V+^+~+ngx'w# '!9^#V#N#F#nx's# '!9^#V#~#fox#(((#(# (!2(!}!}!9^#V#~#foxZ(~Z(# I(!9~#for(#i(}!9^#V#^#V#N#F(!9^#V#^#V#N#FI(!9^#V#~#foxZ(~(# õ(I(!9^#V#^#V#N#Fõ(!9^#V#n~((#(!|!9^#V#n)#)x( +~)(!*A)!*w#w#w#w*~#~#~#~"*V+^+V+^*"*s#r#s#r***""*į>w#¤)*~o,#³)d,=ɯ<**###))))))+)**į#***į#***#/***#D***#Y**~/w#i**~?G*^#V#~#fo))Ҏ*#†*DM*s#r#q#p*~?W*###~*~w+·*³*7~w+**~#*Oá)**y2* *:ǩ2V+*w#+:Ƿ)**y2* *V+*w#E+:Ƿ)!ǯw#\+> 2!~w#m+O! Ƿ#‚+y+!4!5g+!5+!~w#ª+O! Ƿ#½+y+Ñ+! Ƿ#+* ~#+*~#+!ǯw# ,> 2!~w#,E,! Ƿ#.,E,9,!5,*w#T,)o,!)d,!<)o,d,)o,o,d,)d,o,)d,d,o,*s#r#6#6*s#r#z,6#6*^#V!9f."!6o&!9~++f."!6!-#|+!9^#V*&-*9}|&-*"|ɯ=go!9~#f/o|/g#"Wo&!9~Gq$q$q$"               \0123456789abcdef $&& $&&; Dump program, reads input file and displays hex data ; 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 area (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 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 ; 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 2.0$' 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 ; ; stack area ds 64 ;reserve 32 level stack stktop: ; end DUMP VERSION 3.0 DUMP.COM COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]Ҋ ҏ>.Ï_ Ҧ0Ï7Ï͜Ü\2|::Iͺ>2 :2f>2>û>!6 #=!~a1{1 w##:Ƃ2*6 2fl:<2!G\:>2 *|ͫ}*ͫ>:Ï:> ͏> Ï> Ï:_:<2>2ͺ >Ï*}o|*!""ͮͷ͇*"͛~ͫ#*}#"%"*̀*}K|K*ͺ-m121=2#\:}mͺ2>o:  /\ͺ 1gn~ͻ͙D.:ܰg+":>2 CP/M 3 DUMP - Version 3.0$ ERROR: File Not Found $ Enter Password: $ Password Error$ ERROR: No Records Exist$ Press RETURN to continue $, ; ECHOVERS RSX pstring equ 9 ; string print function cr equ 0dh lf equ 0ah ; ; RSX PREFIX STRUCTURE ; db 0,0,0,0,0,0 ; room for serial number jmp ftest ; begin of program next db 0c3H ; jump dw 0 ; next module in line prev: dw 0 ; previous module remov: db 0ffh ; remove flag set nonbnk: db 0 db 'ECHOVERS' space: ds 3 ftest: ; is this function 12? mov a,c cpi 12 jz begin ; yes - intercept jmp next ; some other function begin: lxi h,0 dad sp ;save stack shld ret$stack lxi sp,loc$stack mvi c,pstring lxi d,test$msg ; print message call next ; call BDOS lhld ret$stack ; restore user stack sphl lxi h,0031h ; return version number = 0031h ret test$msg: db cr,lf,'**** ECHOVERS **** $' ret$stack: dw 0 ds 32 ; 16 level stack loc$stack: end 1I"CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]8/82Invalid Filename$DIRECTORY FULL$DISK FULL$Creating Password$File not found$File not available$  ,.;=:<>_[]*? ERROR - $Password ? $Cannot Edit Wildcard Filename$Enter Output file: $FILE IS READ/ONLY$NEW FILE$-(Y/N)?$Insufficient memory$Enter Input file: $Output File Exists, Erase It$ BREAK "$" AT $END OF LINE$1I"1I"̈́""%*"%}0!#6%!"I" ͫ!+!#s͠!#s#r!I"!^ ͵ #I"!++s#r!#ͧ!+s#r!"#*#ͺ!"L#*I"% 6*I"+"K"ͫ!"M":] sr ͡ !#6\Mڀs:#Ҷ\S:h2y#!h6*"%|¶12!%¶!!%6!#6!+#:\:t#/H+#͍͋!%6 !"%*K""%!#6à1I"! %6#@1I"! %6?@1I"! %6>@1I"! %6F!"$%@! %6F!"$%1I"!w#6 * %M͟  :% :% H| Ã*%M͟ >$%!ʝ*$%DM !"$% 1I"!{#6! %6!z#6͂ ! %6E: $2%E͑  sð H͑  !s#6#~:+#2%:\2+#:%2\#+#3\+#!t#6ð :%I`!#: $: %H2z#i!#6!"%}2%*%+% ~ fiW?:%<:%:%H:%H:%­ ͋:% :#!# :%^> :#2#O> w:#!#?!w#6!#6!w#6:#2#!#&:#2#:#2#:#!#< ,V*%+% ~ P !%6:%ƒ> *%% ~2%O͟ !%6:% *%+% ~ HҬ ͟ - *%Mo ^w:%@Ow:% :z#/H- : % :% !#4 :% :#O>!#w-:% :% /!%6  w4!%6!#6pi:%O- !#6:~#!z#] ð O͸ u\Kð :%RRP"m2 %Ғ!v#6:v#: %ڬ P"r"!\"6!p"6#6P"!v#6Y2%-!v#6P"Kð Q͸ +#ͺ:t#/!s# #+#3+#ͺsð :%-&͂ !%6:%#7ͻ͂ t!T!:%:Q!%6L=!t:%:t͂ !=!:%t*%#"%Ҁ!%6:%B¡!%>w!"%*K""%ͅð :%C²Ͳͅð :%DͲ͋ð :%K͋ð :%L͑ð :%P !%6w  ͎ð :%T ð :%U6 :%2}#ð :%V… f %%!DMt/͟ *K"DMt  :%2~#} !#6 !#6ð :% ± :%: %HҮ ͑ð :%Hҭ :%A !%6*%"%*K""%ͅ   !%6ͅê :%F M \ ê :%J¤ Mx: %2 %xҡ \: %=2%:%<2%! %f *%&$ ~2%-E *%"%* %M* %~ ! %: %%!"%!%6ͅ*%DM͘4 ê :%M: %H !%6>%! L:%<2%O!%$ Hqy :%2 %!%6*%#s#rê :%Nf Mc * %` ͭ/ @̀ !%6!"%͇ͅ!%6K"%!]   ê :%S¶ Mxҳ \: %2%%!DM͘! %:%Ұ *%&$ ~2%!%4-Ï t ê :%W ê :%Xu P"m2 %!#6 !u#6P"^:#  r `!u# ͓B !u#6 r"P"!"6#6!~"6!"6r":#B 5*%"%%%!o *%% N*%"%K >ê :%ZŸ ҏ ;  @Ҝ Ï ê :%ʪ ð ív!&%q:w# *&%&!'%q:'% !#4:'%  !#6*'%M :#    !#55!(%q:(% :#O>H2)%yQ !(%6 !*%6:)%!*%n *(%M !*%4V !+%q:+% ~ >:+% :+% H:+% H!,%q*,%Mo ڻ ^+ :,%@2,%*,%M+  ͟  ͟ !.%p+q*-% !0%p+q */%DM !2%p+q *1%DM !4%p+q*3% !6%p+q*5%:! %6O!"$%@!8%p+q*7%!:%p+q*9%2#!<%p+q*;%2#!>%p+q*=%!@%p+q*?%!B%p+q*A%!#6# >>!D%p+q*C%!F%p+q*E%!K%r+s+p+q+q:G%=2G%+*H%*J% w*H%#"H%*J%#"J%!M%p+q###*L%gR !O%p+q*N%f!P%q*P%&-:u#Ҁ#^͵  !R%p+q*Q%DM s+#K͍:#ҹ#!T%p+qͬ*S%DM^!V%p+q*U%DMͺͬ*U%DM͑!X%p+q*W%DMͺͬ*W%2#!\%s+q+p+q:\%=2\%2*Y%:[%w*Y%#"Y%!`%r+s+p+q *]%*_%DM"͹!a%6:#!a%ڵ*N#*#DM\q2#ʤ>!#ґ͟*N#*#6:#2a%î*N#"N#!a%4`͹!"N#:s#>#N#!X*N#*#~2b%*N##"N#:b%:t#):s#)!R#+##R#3R#ͺ:#)>>!P#ͧ!!d%s{@*P#!e%s!"P#!c%6:d%!c%*P#*L#DM+#́ʵ]>P#!ʦ*P#:e%ͷ!*P#*L#DM*L#*P#:e%ͷ!"P#$*P#"P#!c%4S!"P#!f%q#P#!,*P#*L#:f%w*P##"P#!g%q:#,Q:~"2":"2"r"́'$$!#6*#&" :g%w!#4:#2h%>!h%Y!h%4Dr"K!i%6 :i%=2i%ʐ*i%&r" *i%&P" ʍ>e>:"2~"r":"2"Qr"q:"2"!#6>!#*#&" ~!#4¾*P#},:s#\K+#K:#͟:x#+:5#25#ͬ+#:t#G\]#l3\+#]#;#3+#!k%p+q*j%*j%DM!l%q: %ʄ*l%M͟ !m%q:m%a/>z!m%/H!n%q*n%M͌ҹ:n%_:n%  # !o%6>!o%I Oͤ2p% *o%&# :p%w:p% I:p%:p%7:o%$:o%=2o%O!# 6 :p%Bs!o%4ͭ2p%!q%q:q%a!q%6:|#p*q%Mͤ:q%!s%p+q!'"v%!u%6>v%!*r%*v%~!{2t%*r%̀!"r%PY! ~!"v%:t%!u%!u%6:t%0O͟  ͟ Å!y%p+q:~#*x%DMt:͟  ͟ :z# ͟ *͟ *!$DM: %&*%& ~I:%<2%O! ~> >! %ҡͭ_! %:%ڍ>%!ʈ*%+"%>ͷ!ˆ!%6:%<2%=O!%$ NP:z#Ұ; OP:{#!{#6:#!~#K"%!*͟ ͡! $6 ͟ !#6!#: $2{#* $&# 6 : $<2 $=O!# NP:#B*Oͤ2%LLOͤ2%!{%p+q!~%6! %6!#6.:% ʏ:%ʏ *z%*z%#  :% ž.Ð͹y!|%6͹>!|%ҽÓ͡.ê:%::|%Ó*z%#~A<*z%wO>Ó*z%#6 .:%.)!|%6!#6.͹)> !|% Ó͡. :%;v*z% !|%6.͹d>!|%[Ó͡.H*z%DM#Þ>!}%҅Ó:~%ڏÓ:~% ! %6>:|%<2|%O*z% :%w!~%6!}%6>!}%*}%& :%> !}%  >!}%4¾>:#' ͡! $6!{#6 +#M9!t#6:,# 6,#]E+#\#4#:q"wRP"qr>!q"6:q"<2q"=O! NP!h6!j6!|6:#ҩcͬ\;"#:#c*#}|Hͽ ͬ\;"#*#}|H͍*#}2#:t#C:e&;͍C:fC:d>!#6C!x#6:#f:t#X͍!s#6M #+#3!7#6+#:#…͟:y#ʞ:y#27#ͬ+#,!7#6!K#6*#"N#!"P#!"!$!"%>%!!"%*%+"%>>!"#$:%*%#"%*%"%!"%+"%$*%"%*K""%!"%!%6:%Ҭ%%!2%*%v!"%% ~ He*%"%0*%+"%>ͷ!2%:%ڕ!%6%%!+s#ré*#$+"#$:%ҩ*%"%):%*%"%*%+"%*%#"%*%#"%*!$#"!$*!$+"!$*%#"%*%#"%*%+"%% ~ *%+"%!%q:%Y%%!V:%S*%% ~2% E*%% :%wÄ%%!҄:%ҁ*%% *% wYͅ!%p+q%%!ʱÞ:%*%"%%%!!"%%%!"%*%"%%I"!%!*K""%*%*%"%%%! OQ2%3*%% :%w:% M!%q:}#d*%MP:%K"%!x*%% ~2%O:% –hͻ%K"!M"!ڼÿhÝ!%6!"%*%"%͚ͅh%%!!%6ͻ:s#)2%)*%M%%!=*%% :%w:% VL2%:% :z#/HH/Wҥ:% ”!%6 ͦ!%6 :%Ÿͦx* %&$ :%w: %<2 %d!%s+q*%"%!%6:%/%K"!H8*%#"%"%:%2%*%&$ *%% !%:%2%/H5!%4*%#"%:%I*%+"%ͅ:%! %6x: %2 %* %l!%p+q*%DMM2%: %ڍ! %6O@ *% ~ :#/Hҷ *%#*%#~ *%##:%*#$*!$DM!z#6:%!"#$*%"%*%"%*%+% ~2% %:#" ,*#$#"#$*%"%%%!v:% Z*#$#"#$ͭZ*%% ~2%O͟ *%"%2*!%&"%*%"%*%"%̀w͑:%2%!%6w:%2%K"%!>%!H͇!%6>!%ͭ@>!!%4!%6!"%ͻ, M"%!& )  !%6 -!%6 -:#>%!H] @!|#6*%M͌2%*%MP2%:%/!}#+w!|#6L2%^ !%q!%:%:#H: %H!%q*%M͑  *%M V ; Oͤ2% :%N à:%Y > >:%02O"O> /!"%!))덑o|gҗ! =…!^#V) ¡!^#V|g}o «!_{ozgi`N#Fogo&og H !=! LIBX$$$$$$$LIBX$$$$$$$LIB$$$BAK1CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]PASSWORD0CONFIRM []=,  *** Aborted by ^C ***$ Disk I/O $ Drive $Read Only$Currently Opened$Password Error$Password: $ $Not erased, $ ERROR: Missing Delimiter or$ Unrecognized Option $Near: $Requires CP/M 3.0 $Enter filename: $ $ERROR: Invalid file name $Confirm delete all user files (Y/N)?$No File $ (Y/N)? $ *** Aborted by ^C ***$11͢}0͢|HSb4 ڑ!16fb(r2:<<2}wb!6 *}& 6!u6:}!uڑ*u& ~aڊ*u& ~}Ҋ*u& ~ w!u4U!"+!\"-+5 "{{͔zb>{͜*{~ *{#"{*{#"HR :\Oy<2\2y.3l -:1/Ҁ!u6:u<2uO!\ ~??(> !uҀ:2/Ҁb@2x:xy:xYH/} .l\ -ˆͫlͻ2z:zµb:z6:z`O! "/E";G"=I"?"A"C"E:1Ҷ*/:y³:\A=OI:I I!v6> !vW:v ?.I*v&*/NI:v<2v)b@2x I I:xƒb:xy:xYHҳ. */#DM] -¨ . */#DM] -  ͫ*;E*=G*?I*A*C*E!=lͪ-.*=l -%2zõv!q*&!p+q* !s+p+q*:w#6* *#"N#Fy  !p+q*! p+q*!"p+q*! -!'q:'2#!$6#1!*r+s+q:(2#!$6*)#s#r#1m!Nq!O6*O& X>*O& :Nl:O!O4F!Ur+s+p+q+p+qͪ !\6*T~*T~2\*YM=2L!`6:L :`*YM=2LïÐ:V2KN :V2K2_*T~2]!`6*T~2\*T~j*TN! *R*R =2^!_^!`6!W6:_!W[ :`T!W4=a*T6N *T:]w:KH͂+s#rͪ :Lʔ*H#"HÙ!L6:\2aO*R ~2X*X&*P:!a4*T:aw*X&*P:Y*a&*R~2Xë*T6*H~2Y͚:X2Z!V6*H#~2Y!Z4N*P :M( !`6> *Z&*P:Y> !`6!V4N*H ~2Y*V&*H~2Y*YM=2L:L>!LHҗ !V4N*H ~2Y*YM=2Lf :V2KH͂#+s#r*HN=2L! *H#"Hê ͙ b I I!es+q+p+q:e=2e *b:dw*b#"b !fq I:f) b:f7 b:f:fHU b:fc b:fq b:fҁ !hp+q:2Қ *g >w3ͫ*g:\w*gDM"i*g >w*i} *i|2k:kH *kM :k>Y2la :l{ :l :lb3 !m6>!mڗ 2n D *m&3 :nw:n O × :nZ  :n€ :mm  :m=2mO!3 6 , :n !m4# ͙2n!oq:1 :\A=OI:I I!v6> !v :v .I*v&*/NI!v4 bb*oM \͂ 2wQ :w$ *wM B :wB *wM͞ \͂ 2w:wQ *wM͞ !L6!J6:L:LH:LH Jt:J b.bLb:KH͜+"p!r6:K!r *pNI*p#"p!r4¹ :J !26:J !16\ !tp+q*s~ ~ H% *s#"s *s~1 >>!`i^#V#~#for0V y wÇ G:„ xA  a{k_  ~ ~r_ogi`N#Fogo&og_{_z#W0! }|x/Gy/OzS)80# 8 _733< _7ɏ0#  _7 8  y0 0(O0O "|ѧR|2~ (J/N)? J(j(N( n(O˯2 ((  :J{|W_0e. !0 )  |ʴb^#V#><*l^VR89 *n^VR8)*l^VR"l*n^VR"n0*l+"l(0(Oy(0~#O! !~O#N#F#x( ~#~# `i!W[ (Y/N)? Y(y(N( n(O˯2 ((  :Y'd ;@B'd 1Q Number of disk access errors during session Ad:|004Requires CP/M Plus Version 3.0 to execute. :~84 Requires the BIOS revision F to execute.  9 There will not be any errors in a WorkStation. T] Winchester Read errors:N#F#  Winchester Write errors:N#F#  Floppy Seek errors:N#F#  Floppy Read errors:N#F#  Floppy Write errors:N#F 0 0U 0"F=0>&2?>1&0:?0>&;:2?*@~ 1=1O+1 0x+~10:@*@~<1=11O+0 0U 0"F=0>&2?>1&0:?0>&;:^Y[`cU4U$haQ5 2STACK1U`ddDH1%:FDREADԒU d4DdX]%9%RWINITDUSUuu$H]IQ5:ӕ8 0P+W0ix ~G@^+7DB6?\- ͺL4 ?9r(^ͦ0R'0V+'AxFVxjx?$ K ^`lxix *V+U~U+:U{63n7DYnZ/30\"+xOw&W%  ix .~t`CS2C7)pXߧp3~A7D;\ " 7F`t2|+WnY.Ӟy 밦mfVnRn neFjs;g#?7N6nh fcywB@wӸ F~n,i< uS63r37^ oN 3wx0`̀r@ 7K`0:dq <3u88?7i< uS63r3tSlz 3s`37"#lq;lldq <3u;t p023n]f&7303 fv7P8[`+llܪ u?FWl+/Nˀ "3s0~?pk7<L<f'TʠctS@!nӸ5njv@ fPq`,śY73@ZAeK!R;{xc0ݪ'@ E /Epd q2C-fA'wp3p`~lݲ!L6"I< 2FnBc5@P=0#=9N#Ȁ=4R 3suBA0x|밦+7&\@A[L428n72@!f7 ̝d9EWF"@dCɀn r Ey!K;(|br`̝d/g$|~MX(2#2A bs:aM0|d }Za6ݤL#^PٻH W@ ,܈1Yx4]8B+73pH#`.MF 06ߣ` ^fXP0T8!aefyOdr@ ;Va01Z+z!]7f u`Up F@D%)GDqzOq< xFnӸ4|f@vnx +7Y#]AfFnpY  d@eT@dPCr\^ Pn녢dv !܀5L62`Gf Amdٶe՘a~sHffD~BF$ nv@8?# =AQ,6!0p!*iIuN(~\'HN 8O#-p\+tvh@sǀn]#G?ߢ!!~)UO~\/A~[Vnn[V ~ ;@I@583WNG #D9$"V?Oe86: @jg  \og%6x?NW ?{~o01ps8 %pAH6K @pA|, ,2G~/0(?/Ӹ nA<~ C[0(/Ѱ;@; nӸ504dNm88p ff wJd 5OTUMI5Г#YIZ3\PГG =55>4$PA152P#HIIZ4HPP#[QI.5T 9Q1V5PQPII=H;$VP#%9%R<SӠI=ԒU#Z@%9%MQ65SU#I 1=%85UVU#DI\4 R։#DM-QH;PcMQMX3 UQSW]%QIF=USU#]%9%QkLB9Ӑ(ꒀ=Unk ~gP bpD eg68_'0^`KdTdq <3r0 vX>9H, nA /ߢ ?M `w?D;h"Vj ;p+2y : Ѱ  ~[K8x%u`gq@6>#?7NAwӸ ,=!'~n2~n3tpK%sہ<ͺ ݶ[S w#7m,-ՀoYG7  0Cv@n7m7O8vS7z3v8 ?FG7VVkg0AG7 7Opw+ys?߮{ہ n`3p~?NnjqFASlFb#7wp0VnWpLݼ v7O%;! ;Y@ fpV79Dn;,ܺ ,Yt j3u4eP$!N >Gf3 =ڬR{4`\ WB$0N?p&h?{7Dv7S?M'`B֠Lh(B$b)o9 t :&3X  # r: Cӑr< #Io9E"7X%AYx^ bw0̝d/g%~4M, } 0qm$ "Vnp\CUxb+:^H<>T1\`(Wt0xCG+7s\@AG8e€3,r0C,j?a+7X<G@9"nn`8̀d!*1pE esL&>zOi~M }7HPp8eAo+ `@ P`Dja =f " \ pc .(2 |iasaCiaYPm-WmlVnx`Jd h@ r8ؠP `^ 2b vPK bJ%:{``2ƀ urG@A@0Fp~5NK7SHPҝ>;$uCߧ2PDpkX* +]d38͠٦d Axf`Fa >6a^2liSCіndC3 Pd=Cˤ(Mhp40yQKA(ME]f . 4< EѰ!@W3B; 3UT RU*YkLFt,adw gr9xqFTV#P$gF9ez^w grg opƥ)KƠ`yq84m˷%q L&3zГ#L X =9%:5^Oӓ]A5M:TTMX] ==R4 PQ5 9.5 SSV`5 9.5`Pc,Q 25`PUM R4 I 9-5M.;ӕcN51;$VP# %9%R=S9I=ԒU#K`%9%MQ64 UVU#QI5 U<SRScI51&^,Tp\.60$ @@|hF4:U{6HfcxX%Yͫd:,Cw,0uy⁳1/W(9XVW0=Uͺ tf0녺h#+p8=p۴^`HK{%2Ӑ! N  :pCBB%`~ӸwC! ( A^`녺dNz(cB\6$ w` 3tp;ٸ"`2~  ' #?7Nw]=V1ݡLۮЀ (OU8 7O3q8,ܪ-`e 0 @t ݧ=V1ݡLۮЀN wx0rѰʠU[< e 0 @$~\녺vXS%@ nӸ5ڬBnF}t88_ѰdO; :whBt~T 3r;U@"S7C Nf`!~?Nn@ N1K7a ndj?,H@S@;"lQd`v-(g ?8 ?O1"~Op fv$3p$ $r9By@# -ABb7e:"Hg7FQHΠL f`vnW@CBܘs'Yn 0l #CL qn7l Ȇ+,2u^ 8B W+7&X.g!*1p/g$ 0ɀl2uxN7Y`B0 COiΠLv4+dyiۧ3v2rEx Q@@|f 6Y\ A^~0l @M0ea[cC8 0#0P?cY( Ci.@+=G(y-0}@ h  :+n amA2Zayw>aKU! Ng7~wh(3w+7vg7~Z2~2;Vl h_C~` 7Bxt~[K†;)u#p74XxsaCͺ  €[S Bt37R,,PؠӞ Цmf@fnٺx(a@ۧ3 ܠf`G PrEw!K\"t<a7CoѰ_H63qx(ߠD,Ckfle9!asfnd p08:Y3wh(dZ8#X$"@â E=_8w#l +CB(|ia0@fVKl.l*ܠ( p6nd. jD:$ bq;"V?C!E7D8$$nˑ K ( Xi`8ꐕ{:_@SV?A.QGWݤ' p' d[W:;  9H@q\. # ꐐX?‪`'\d r\-+7\-+EsN@֋~w dwߧp#fvHߢR+2Pm0g 3|R@ _7 jJeyp+~vBw?MnYr@ $ H?a%~czrB d]`}#M ?OHUz ?NKnp~Ѡ~RWfv SadI~uHKS bq;^;%`2rA;>kL%v`@cYX![4c- !! ݪ 9 +@:A qz2 a}@6\\ghu>0q@P z-2rp@PP 8<˗%AB&gY8<˛%AB:gx`.~@ P g ~@rM!6@N.b ʗ2R_b0d' #OC;1oÌ6BF #<:1o+3@O;88O{5(H@\. ˁA&]V. vK¥ށQ ~i)ѡP*~ h ~IꑠzhIqlIqdIJV hjxIiiq` ȉ(Ɉ ȉ)*P ȊH( )*j|j(if1p cʩq:*)*JYH(@J8IꑠzhIqlIqdIJV hjxIi! }|x/Gy/OzS)80# 8 _733< _7ɏ0#  _7 8  y0 0(O0O "|ѧR|2~ (J/N)? J(j(N( n(O˯2 ((  :J{|W_0e. !0 )  |ʴb^#V#><*l^VR89 *n^VR8)*l^VR"l*n^VR"n0*l+"l(0(Oy(0~#O! !~O#N#F#x( ~#~# `i!W[ (Y/N)? Y(y(N( n(O˯2 ((  :Y'd ;@B'd 1 FASTCOPY - Rev F. 42!~ĀAd:|004Requires CP/M Plus Version 3.0 to execute. !FwG:~84 Requires the BIOS revision F to execute.  % Cannot run on a WorkStation.   Source :}( local drive name (or for A:) >~ >A˯A8Q81 Please, give a letter (A-P) or . 2KA_2L8: Requested drive does not exist on this system.  Source on :KO then press >~(  It must be a floppy. :( Format option choosen. No format option choosen. Destination :}( local drive name (or for :KAB(A:) >~ y˯A8Q81 Please, give a letter (A-P) or . "!K ! Not to the same drive "2MA_2N8: Requested drive does not exist on this system. " k# Destination on :MO then press >"~(YSorry. It must be a floppy. " The two drives must have the same format "~2P~G>_SWNFN |(n fF(<"Q}2^~N_P`h SS{2]Q<:02_y"U If you wish to copy the entire diskette in drive :KO: to drive :MO: and delete all information on destination drive, then type YES ! 2Z>~˯Y#~˯E#~˯S:Nn >G (1 Drive not ready. Operation aborted × w(: Cannot write on a writeprotected diskette ! × >ͬWʅ :L>ͬWʅ :NO(O !'+O(| 6 Cannot write on a hard sectored diskette : >2Z2F!*~XͺG :L~XͺG :N2Hv 2H:L 2H:N !F4!^< :N:^G=2F2Z:F~ͺG ů2H;!F5:Z 5 Diskette successfully formatted and copied ×  Seek error. Operation aborted >2Z: Format:FO:]G:H[`*bqwG!b" !>ͺ(&2Z Write track error #:ZCF!H4Fv >2I Reading:H'2d[U!(!:",>2G:G!*>!dͺ(y2Z Read err #:ZC at sectorC:I=2I >2I(A=Abort,R=Retry,I=Ignore)>(~˯AI(R *,[U",!G:]<4/ F!H4F  Writing:H'2d[U!(!:" >2G:G!>!dͺ(k2Z Write err #:ZC at sectorC(A=Abort,R=Retry,I=Ignore)>(~˯AI(R * [U" !G:]<4F!H4F  Verifying:H2d2G2Y!G4~*U+".!*>!dͺ(U2Z:Y(  *** Read error at sector >2Y:GC:G!] F!H4F¾:No!c"b*Ur"`!bP>N >>w#2>N>2G >>w###:Gw#:_w#>w#>N >>w#:VO:UG  > >w#6>N!G~4!]8>Nâ!Ec"b:*U"`!b(>>w#>>2G>w###:Gw#:_w#>w# >>w#:VO:UG  > >w#>!G~4!]8>wT]   8>N w# Track :FC Side :HC!>F#( ybχ ybχ!WW~O#~U~檩˿#kxxmt!90$`tkeugj #~ (/#~F >2H FASTCOPY will just make a copy on a formatted diskette FASTCOPY /F will format the destination diskette and make a copy FASTCOPY /H will show these help texts ##~#7+4r:47H=r:1:3 7* @4 bk6 ʝOJ) V7JG7> J> J:> @ ʝ2 @O ʄ7@ u77\4^4!H=: @O~ʥ7 #Ù7!4 bk Title 'Fdrives.Asm' ;------------------------------------------------------------; ; Definition Module for the Floppies in the system. ; ;------------------------------------------------------------; ; Latest update: 1985-11-15. PSW ; Biosrevision: F ; ; For the RMAC assembler. True Equ -1 False Equ Not True ;-------------------------------------------------------------------; ; What kind of floppy system do You want ? ; ; ; Verify Equ True ; Verify after write. ; ; ; Jet8 Equ False ; External 8" drive ; ; ; I: 8" 1x77x26x128, 64 ent. Unit0 ; ; ; J: 8" 2x77x8x1024, 256 ent. Unit0 ; ; ; RamDisk Equ False ; M: 128 KBytes Ram Disk ; ; ; ; Mark correct floppy system with True. Note: Only one True. ; ; ; M8 Equ False ; A: 8" 2x77x8x1024, 256 ent. Unit0 ; ; ; B: 8" 2x77x8x1024, 256 ent. Unit1 ; ; ; C: 8" 1x77x26x128, 64 ent. Unit0 ; ; ; D: 8" 1x77x26x128, 64 ent. Unit1 ; ; ; Note: MUST NOT BE USED WITH Jet8=True M5 Equ True ; A: 5" 2x77x8x1024, 256 ent. Unit0 ; ; ; B: 5" 2x77x8x1024, 256 ent. Unit1 ; ; ; C: 5" 2x80x5x1024, 128 ent. Unit0 ; ; ; D: 5" 2x80x5x1024, 128 ent. Unit1 ; M596D Equ False ; A: 5" 2x80x5x1024, 128 ent. Unit0 ; ; ; B: 5" 2x80x5x1024, 128 ent. Unit1 ; M548D Equ False ; A: 5" 2x40x5x1024, 128 ent. Unit0 ; ; ; B: 5" 2x40x5x1024, 128 ent. Unit1 ; ;-------------------------------------------------------------------; Page 66 Rate0 Equ 00000000b ; 3ms/6ms Rate1 Equ 00000001b ; 6ms/12ms Rate2 Equ 00000010b ; 10ms/20ms Rate3 Equ 00000011b ; 15ms/30ms DoublS Equ -1 ; Double sided SinglS Equ 0 ; Single sided Unit0 Equ 00000000b ; Physical Unit select 0 Unit1 Equ 00000001b ; Physical Unit select 1 Unit2 Equ 00000010b ; Physical Unit select 2 Unit3 Equ 00000011b ; Physical Unit select 3 Inch5 Equ 00001000b ; 5"-Floppy Inch8 Equ 11010100b ; 8"-Floppy DoublD Equ 00000000b ; Double density SinglD Equ 00100000b ; Single density Comm Equ 0C0h ; Common area ; 64K - 2*8K = 48K = C000h If M8 Sign Equ '8' Else Sign Equ '5' Endif Extrn FdRead, FdWrit, FdLgin, FdInit If RamDisk Extrn RamWrit, RamRead, RamLgIn, RamInit Endif Public @DTbl, ?Titel Public @Commo, RamBuffer Cseg @DTbl: Dw FlA,FlB ; All systems have A: and B: If M8 Or M5 Dw FlC,FlD ; Else Dw 0,0 ; Endif Dw 0,0,0,0 ; E:, F:, G:, H: not installed If Jet8 Dw FlI,FlJ ; Jet8 has I: and J: installed Else Dw 0,0 Endif Dw 0,0 ; K:, L: not installed. If RamDisk Dw FlM ; M: can be Ram Disk Else Dw 0 ; Endif Dw 0,0,0 ; N:, O:, P: not installed @Commo: Db Comm ; Page Dseg If M8 Or Jet8 ; Define 8" 2x77x8x1024, 256 entries. Unit A:/J: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+DoublD ;; $FdXsl Db 0 ;; If M8 FlA: Dw 0 ;; No trans table Else FlJ: Dw 0 ;; No trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank Endif If M8 ; Define 8" 2x77x8x1024, 256 entries. Unit B: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit1+DoublD ;; $FdXsl Db 0 ;; FlB: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank Endif If M5 ; Define 5.25" 2x77x8x1024, 256 entries. Unit A: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit0+DoublD+11000000b ;; $FdXsl 2 MHz 8" Mode Db 0 ;; FlA: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F5Max ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. ; Define 5.25" 2x77x8x1024, 256 entries. Unit B: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit1+DoublD+11000000b ;; $FdXsl 2 MHz 8" Mode Db 0 ;; FlB: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F5Max ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If M596D Or M5 ; Define 5.25" 2x80x5x1024, 128 entries. Unit A:/C: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit0+DoublD ;; $FdXsl Db 0 ;; If M596D FlA: Dw 0 ;; No trans table Else FlC: Dw 0 ;; No trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F596D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. ; Define 5.25" 2x80x5x1024, 128 entries. Unit B:/D: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit1+DoublD ;; $FdXsl Db 0 ;; If M596D FlB: Dw 0 ;; No trans table Else FlD: Dw 0 ;; No trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F596D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If M548D ; Define 5.25" 2x40x5x1024, 128 entries. Unit A: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit0+DoublD ;; $FdXsl Db 0 ;; FlA: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;;  Db 0 ;; Mediaflag Dw F548D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank ; Define 5.25" 2x40x5x1024, 128 entries. Unit B: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit1+DoublD ;; $FdXsl Db 0 ;; FlB: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F548D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank Endif If M8 Or Jet8 ; Define 8" 1x77x26x128, 64 entries. (IBM) Unit C:/I: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+SinglD ;; Db 0 ;; If M8 FlC: Dw Trans ;; Trans table Else FlI: Dw Trans ;; Trans table Endif Db 0,0,0,0,0,0,0,0,0 ;;  Db 0 ;; Mediaflag Dw F8S ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If M8 ; Define 8" 1x77x26x128, 64 entries. (IBM) Unit D: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit1+SinglD ;; Db 0 ;; FlD: Dw Trans ;; Trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8S ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If RamDisk ; Define RAM DISK, 32 entries 128 KBytes. Unit M: Dw RamWrit ;; Dw RamRead ;; Dw RamLgIn ;; Dw RamInit ;; Db 0 ;; Db 0 ;; FlM: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw Ram ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hashl Db 0 ;; Hash bank. Endif Cseg If M8 Or Jet8 ; DPB for 8" 2x77x8x1024, 256 entries. F8D: Dw 64 ; Number of logical sect/track Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 607 ; Max blocknumber Dw 256-1 ; 256 Directory entries Db 0F0h,0 ; Alloc vector to directory Dw 256/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch8+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies ; DPB for 8" 1x77x26x128, 64 entries. (IBM) F8S: Dw 26 ; No. of logical sectors/track. Db 3,7 ; Blockshift and mask Db 0 ; Extent mask Dw 242 ; Max blocknumber Dw 64-1 ; 64 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 64/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 1 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db 0 ; Single sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch8+SinglD ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If RamDisk ; DPB for RamDisk, 32 entries. 128 KBytes Ram: Dw 512 ; No. of logical sectors/track. Db 3,7 ; Blockshift and mask Db 0 ; Extent mask Dw 127 ; Max blocknumber Dw 32-1 ; 32 Directory entries Db 080h,0 ; Alloc vector to directory Dw 8000h ; Checksum size None. Dw 0 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 3 ; Ramdisk. Db 0 ; Dummy Db 0 ; Dummy Db 0 ; Dummy Db 0 ; Dummy Db 0 ; Dummy Db 0 ; Dum my Db 0 ; Dummy Db 0,0,0,0,0,0 ; Dummies Endif If M5 ; DPB for 5.25" 2x77x8x1024, 256 entries. F5Max: Dw 64 ; No. of logical sectors/track. Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 607 ; Max blocknumber Dw 256-1 ; 256 Directory entries Db 0F0h,0 ; Alloc vector to directory Dw 256/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch5+DoublD+11000000b ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If M5 Or M596D ; DPB for 5.25" 2x80x5x1024, 128 entries. F596D: Dw 40 ; No. of logical sectors/track. Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 394 ; Max blocknumber Dw 128-1 ; 128 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 128/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch5+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If M548D ; DPB for 5.25" 2x40x5x1024, 128 entries. F548D: Dw 40 ; No. of logical sectors/track. Db 4,0Fh ; Blockshift and mask Db 1 ; Extent mask Dw 194 ; Max blocknumber Dw 128-1 ; 128 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 128/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch5+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif Dseg ?Titel: Db '80. ',Sign ;; Db '"-floppy-version. ' ;; If M8 Db '2x1.2 MBytes.' ;; Endif If M5 Db '2x1.2 MBytes.' ;; Endif If M596D Db '2x800 KBytes.' ;; Endif If M548D Db '2x400 KBytes.' ;; Endif If RamDisk Db ' Ramdisc.' ;; Endif Db 13,10,0 ;; Cseg RamBuffer: If RamDisk Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Db 0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h,0E5h Endif If M8 Or Jet8 Trans: Db 1,7,13,19,25 ; Skewing for 8" SingleSided Db 5,11,17,23 ; SingleDensity (IBM) Db 3,9,15,21 ; Db 2,8,14,20,26 ; Db 6,12,18,24 ; Db 4,10,16,22 ; Endif End љ]TED$Q%Q2@COMMOSPQ`U h Š@90% R?0 R?1(' T?2@JɀT?-! |<`d(P`7]8 Ql7ir9MpdxBit2PZ* I mȉ)Ѧ iȊI* 8?2@JɀT?-! | 1n$'CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]!`i^#V#~#foͽ{¡y#wG:xA##6?)@w){#{s333333.;;33,;;#wD{_#6 sO O ڹ.:;=,/[]<>a{Ҷ_#  ý Copyright (c) 1982, Digital Research 11/02/82 @ @NULL0LOADER0SCB []=, :;<>%\|"()/#!@&+-*? COMHEXRSX1###~ERROR: FILE: File not found.No directory space.Invalid file name.First submitted file must be a COM file.Duplicate input RSX...Duplicate RSX in header. Replacing old by new.Invalid RSX type.No more RSX files to be used.Error on copy.There are not enough available RSX slots.Disk read.Disk write.Total file size exceeds 64K.COM file found and NULL option.No header or RSXs to strip.Invalid FCB.Media change occurred.Disk I/O error.Invalid drive error.Invalid SCB offsetMissing right parenthesis.Missing SCB value.Missing left parenthesis.Unrecognized option.No modifier for this option.OPTION: This file was not used.GENCOM completed.Requires CP/M 3 or higher.1n$1n$" %* %|<Ó* %}0HÓ::$]Ç:$jZÇ:$wÇ:$҄ZÇer ͺv!n$q*n$& ͤ!p$p+q*o$~*o$Nͤ*o$#"o$  ͤ ͤ!r$p+q*q$DMͺ !t$p+q*s$!v$p+q*u$!x$p+q*w$!}$p+q*|$"y$*y$}2$|2{$!~$q*~$&,2$!$p+q*$!$p+q*$!$p+q*$!$p+q*$!$p+q*$!$q*$&-!;6:$!; *;&') N#F:2$!;4%:2$%ͻ2$!;6>!;S*;&/% 6!;48!/%6 !;6#6:; *;&*(~ HҞ*;&*(*;&/% w!;4#4`*;&/% 6.!;6 :; *;&*(~ H!;4#N*( *;&/% w!;4î!;p+q3r*;DMͺz/%ͺ!;p+q*;DM *y$}2;|2;:; F  :; T   :;x :;j $ :;x 4 !;q!;6*;&1 :/• >*;&1 :;© :;!;4 !;r+s+p+q+p+q !;6. *;~ *;~2;*;My 2$!;6:$ L :;  *;My 2$ ! . :;2$͌ :;2$2;*;~2;!;6*;~2;. *;~L ç *;N! *;*; =2;!;› !;6!;6:;!;ژ L :;ڑ 6 !;4z Þ 6 *;6͌ *;:;w:$$͂#+s#r :$ *$#"$ :L2$:;2;O*; ~2;*;&*;:/( !;4*;:;w*;&*;:; *;&*;~2; *;6*$~2; :;2;!;6*$#~2;!;4N*; :0f !;6| *;&*;:;| !;6!;4N*$ ~2;*;&*$~2;*;My 2$:$:$H:$H:$H !;4N*$ ~2;*;My 2$ä :;2$$͂##+s#r*$Ny 2$!L *$#"$ :$$#+";!;6:$!;P *;Nͤ*;#";!;41 !;p+qr*;DMͺ!;r+s+p+q*;DM͗ *;DM͗ *;~w*;*;~!;p+q*;>9Ұ *;~7w÷ *;~0w!;r+s+q+q*;:;~!;H IQ !;60!$6!;6*$#"$;+ͱ :;" rͺ :;2 !%6? :;? !%6:$H :$Q :$ˆ :;} rͺ;+ͱ È aͧ !%6:$‘ :$š :$£ *$#";*;Ny 2$ *$DM*;i *:&: w*$##"$ *$;i *:&: w*;"$!:4*$Ny 2$\Q *$#"$*$Ny 2$:$1*$#"$*$Ny 2$!L:$IY!M:$YwQ *$#"$*$Ny 2$!N*$#"$9*$0͸ *$#";*;Ny 2$!L:$£!M:$°6*$0͸ F*;0͸ *$DM*;i *:&v: w*$##"$2*$;i *:&v: w*;#"$Q !;p+q*;DM*O>0*;"( !;p+q*;DM:O>R*;"( !;p+q*;DMJ2$>!$y*;"( *( >Š*(DMͻO>ҟ*("(!;p+q*$"%*;"%*$"'%̀"$$#*'"( !;q!;6>!;*;&)))=% *;& *;& w!;4!;6 >!;F:;2;*;&; 6*;& 6!;4!;6> !;ڍ:;2;*;&% *;&; w*;&*(*;& w!;4K;ͫ2$>!$ҥ*'"(!;p+q!;6 >!!;*;&*;6!;4±!̓#+s#r!<5&*<$T :{$]*(DMZ!#:Q! <#:Q2<* !<ړ*<&* (6!<4w* (" (!<6*<&') ^#V"(x*(DM͋2$!)"<*<*<&$) N#Fq#px*(DM͋2$:)!)6*<&9 :)w!)6!)6!)6%͛2$!"$$*$*$"$!<4:$GT*<$#ã!!<ڸ*<&: 6!<4!\"<$w#s#r!n"<$w#s#r.:[ -!<6>!:H!<6::=!!!%(z:$/H!"$$#͞%U!$6̓!"<6:"<#ڀ*"<&( 6:"<<2"<_!"<6:$!"<ک*"<&$) >w#6:"<<2"<…!(" (* (:Ow:%/* ( :Ow* ( 6* ( :$w!"$:%:O2)x* (DM%͛2$>!$!%"( ):%/i:$R%͛2$*("(!"$$fx%͛2$!"$o!"$*$*$"$/!##"$*$DM*#w#6!)" (%͛2$* (##"*<**!(<ڋ*&<&)))9 *(<& *'<&)))9 *(<& w:(<<2(!(!%< *%<& * (*$<&)))9 *%<& w:%<<2%<!)" (!$6!,<6:$!,<*,<&$ 6!-<6:$!-<ں*-<&') ^#V"(!.<6>!.<ڑ*.<& * (*.<& *(ʇð:.<<2.!$:$_!)" (!,<6:$!,<r:,<<2,<* (#^#V"0<:$5~ *( 6x*(DM͋2$!0<#"$%͛2$*$DMi*0<"$/>>!)" (* ( ~2$ʃ҃* ( :$* ( w*("(* ( >Ҭf %͛2$:$~!"$$!"$$#*$"$*(DM1͞%U̓!)" (*("(!"$:%N:%/!$N!)6 *( 6*(DM͛2$:$H !"$:%1:$d~õ:$ʚ x*(DMZ:$ʚ:{$$͂#+s#r*(DMZy:{$$͂#+s#r!$#+s#r*(DMU:$/1*(DM1x*(DMͦ*(DM*(DM͋2$.)$ -:% !)6:O2) *( 6*(DM͛2$:$1 *(DM1!"$!3<6>$#_"*(DM͠*$~[h*( ~25<>!5<!6<6!4<6:5<=!4<*6<&*(*3<&)))=% *4<& w:6<<26<:4<<24<†*3<&% :5!%**(DM*O>S:%/P o:%o*( >o :% :$<2$23<!*3<&ͮ#% *3<&') q#p!4<6:$=!4< !5<6> !5<:3<=o&!ͮ#% *5<& !*3<&ͮ#% *5<& w:5<<25<³:3<=23<:4<<24<£R"*'"(X">!$҉!!$6!3<6:$!3< !*3<&') ^#V"(X#/b 'Ͳ"!*3<&% >x *3!$Ҙ Ͳ"!:3<<24<:$!4<!*4<&') ^#V"'!6<6>!6< *6<&*(*6<&*' :6<<26<¿ Ͳ":4<<24<Ÿ :3<<23<0 !$:$ !9!3<6!$:3<҄!*3<&$ ~24<:$=2$:4<26<:$!6!$ҹ! !O:) ":$!!$6!:%!%!!$6!!$6:)"!$6.;) -!2":$"!$62":%!%,"!$62" :"!$6:$/^"%ͦ%ͻ2$*(~2%%S!*3<&ͮ#% "(*3<&') q#p!4<6> !4<ڱ"!*3<&ͮ#% *4<& 6:4<<24<…" *$&$ :3 !6<#*5<&*7<*6<&*( w:5<<25<:6<<26<"!: !6:5<<25<:6<<26<:#>i`N#Fog_ogDM!>))덑o|gҨ# =–#DM!>))ҽ# =µ#^#V) #^#V|g}o #O{ozgi`N#Fogo&og_{_z#W!TEMP $$$"1TdCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]0123456789ABCDEF ERROR: $Reading file: $Writing file: $Directory full$Reading file: $Writing file: $Invalid drive.$) ? $) ? $) ? $Bad character, re-enter $ $ Disk read error: $File cannot fit into GENCPM buffer: $Unable to open: $BDOS3 BIOS3 Setting up directory hash tables: $ Enable hashing for drive $: $Unable to allocate space for hash table.$ Setting up Allocation vector for drive $ Setting up Checksum vector for drive $ *** Bank 1 and Common are not included *** *** in the memory segment table. *** $Number of memory segments $ CP/M 3 Base,size,bank ($) $ Enter memory segment table: $ Base,size,bank $Zero length segment not allowed.$Bank one not allowed.$ ERROR: Memory conflict - segment trimmed. $Memory conflict - cannot trim segment.$ ERROR: Memory conflict - segment trimmed. $ ERROR: Memory conflict - segment trimmed. $ CP/M 3 Sys $ Memseg No. $ Bank $ Accept new memory segment table entries $Default entries are shown in (parens). Default base is Hex, precede entry with # for decimal $ Use GENCPM.DAT for defaults $Create a new GENCPM.DAT file $Display Load Map at Cold Boot $Number of console columns $Number of lines in console page $Backspace echoes erased character $Rubout echoes erased character $Initial default drive ($:) ? $Top page of memory $Bank switched memory $Common memory base page $Long error messages $Double allocation vectors $Accept new system definition $ CP/M 3.0 System Generation Copyright (C) 1982, Digital Research $ BNKBIOS3 SPR$BIOS3 SPR$BNKBIOS3 SPR$BDOS3 SPR$RESBDOS3 SPR$BNKBDOS3 SPR$ 64K TPA Copyright (C) 1982, Digital Research *** CP/M 3.0 SYSTEM GENERATION DONE ***$!Tq:UM*T&!Tp+q:Ud*T !Tp+q*T#6:UҀ:Tڀ*T *T#N! *T6 7 7!Tr+s+q+q!U6N*TDMN:TTN͜:T.:T/!U!]6 !m6 !Tp+q *T 6 *T 6*T!Tp+q*T!Tp+q*T!Tp+q*T] ͧ!Tp+q*T} ͧ!Tp+q*T ͧ *T 6!Tp+q*T!Tp+q*T! ͧ!Tp+q*T" ͧ!Up+q*T$!Vr+s+p+q+q:V *V*VDM*V -- !Vs+p+q:VJ *V*VM!VLS!Vq:V e > :Va/>z!V/H҄ :V_2V:V!Vq:V/>!V/HҦ >ͧ>!Vp+q(7*V~ Y7 N7NTe:T *TMV Y*Vw!Vq:VO! N7:VO! N7!Vp+q 7*V|O *V}O H7!Vq*V&+SDM$ !Vp+q!V6!V60!'"V>V͇S† *VM7 !V6>!V VVzSڽ !V6:V<2VVVzS+s#rÔ :V *VM7!V60*V! S"V:V<2V‹ !Vs+q(7:V  #7*V&DMZ  *VM N!Vs+p+q+p+q :T: ͜*V6:V<2VO!T NV 2V  :V,u *V#"V*V6!V6 :V#… !V6  :V02V:V> !VHҽ >!VҸ :V2Vý !V6!V:V *V^*V&+S*V& *Vq !V6*V6ͧ *"V6? ͜*VDMN*V~  (7*VN !V6>!Vn *V#"V:V:-Q/HX *V6d ,7*VN :V<2V, *V++"VNÊ *VN*V !V6!V6Te!Vr+s+q:-Q/Ү >!V6#q#p!V6:5Q!Vڳ*V&+SFQ  VzSک:VM*V&+SFQ  ~*V&+SFQ  VzSHJ:V2V*V&+SFQ  ^#V"Vé*V&+SFQ  ~*V&+SFQ  VzSHҩ:V2V*V&+SFQ  ^#V"V:V<2V¿ :V:VH`!V6:5Q!V`*V&+SFQ  VzS/*V&+SFQ  ~H*V&+SFQ  VzSHV:V2V*V&+SFQ  ^#V"V:V<2V:V!$V6!U6ͬ#Q$!H> U͇Sʔ* U|2Uß*U|2U!U:.Q2T*U|!UO:/Q2T*U|O:T2TUTI:-Q/!$V>O:T2T* U|O:T!$V2T:T=2T* U|O:T2TҮ:-Qқ*nV*U*V |!UO:/Q2T*U|O:T2T2Uͬ:U/Ҙ!!V6>!!Vژ*!V&$SQ  6:!V<2!Vsà!U6:V/ҫ*:U2T:T2TTͩ:-Q*T&+SDM*U*T&+SDM*U:-Q/&:U2!V!""V*!VM"V͟:!V2U! U6Û*U|!U2!V* U|!Uo&)##""V*T&+SDM*!V*!VM"V͟:!V2 U:U2!V!""V>T͇S+s#r*!VM"V͟:!V2U* U|!$V2T:T2T U(T(TͩC*$V&+ST͊S+s#r* U|!$V2!V:-Q/ *T&+SDM*!V"*T&+SDM*!V*!VM"V͟:!V!Uw:-QҢ!T6:T2TULTLTͩ*U|2!V*U|!Uo&)*"V""V*T&+SDM*!V*!VM"V͟:!V! Uw:,Q/Ҳ:V2V *V&U  :T2T*T&! S!0*V& U q*T&! S0*V&!U q:V 2V*T&+S"!U$-U RUW !T6#6#6:.Q2U:/Q2UTqT TyT Uͧ pT !T6Uͧ pT pT :;Rһ!;R6:%V2.Q:4Q/24QTT TT L!U6N!Vr+s+p+q*V6 *V#6 *V|O! *V## w*V|O! *V w*V}O! *V w*V}O! *V w!T:TO`iPSW "V*V :0Qw*V :2Qw*V :1Qw.*V :3Qw*V :4QwX*V   :+Q/ҼW*V >*V w:@*V wW*V >*V w^*V :/Qw!)X"V*VN#F!W "V*V"V*V͕S(!$V6-!$V6*VSD*VWR!"&V!V6&VS!V6>!Vڷ*V&)*&V>͒Sʭ*V&)*&VWR"(V*(V ͕Sʭ!V6:V<2Vf:-Q/!V!$V6!$V6V>X W*V"V*V~>>!Vs+p+q+p+q%N*VDMN 7*VDM$  7*VME :,QҨ *V&U *VDM :V 2V*V&U DM*V:V2V*V&U *V&+S:V2V*V&U ) :V2V!Vp+q*V"TͣN,ͧ*VDM !Vr+s+p+q*V^#V"T*V##^#V"T*V ^#V"T*V#DMT  *VDMT *TZSU͊S@?ͧ*T+ZS}<2V!V6!V:V҆*V&+SW "TDMͧ *VDM> :V<2VS*TDMO W*T"T!Vr+s+q:VGTqT TyT *Vn}2T*V#~2TpT WTS}pS}TR+s#r*V&)+!Vs+6:V!V4>T͇S+s#rBKͧ pT^ :V<2VpT *VT :-Q/k)Tw T z!LT"V!U"V͙!T"V!U"V͙!(T"V! U"V͙*V#DMT  *VDMT *VDMeͧWͧ *VDM> *V*Ws#r*V##*Ws#r*V *Ws#r*VDM> !V6&VS(>!V6>!V*V&)*&V>͒S*V&)*&VWR"(V *(V## *(V ͕S*(V ͕SH*(V ͕SH*(V ͕SH*(V ͕SH!V6:V<2V-:V!V6!V6!V6>!V*V&)*&VWR"(V*V&)*&V>͒S*(V S?!V6*(V ͕S:V/c!V6N:VO!=R ~2T *(V WR"*V**V N#F`i))"VN:VAO7N*V&6Q DMʹ ͜*V&6Q ~/*(V q#p:-Q/!V6*V&,V) *Vs#r*V*LV"LV*V͛ 2V'ͧ*V&+SFQ  *(V w*V&+SFQ N`iPS*V&+SFQ  N`iPS*V&+SFQ  ͕S *(V q#p*V&+SFQ  VzS*V&+SFQ  q#p:V<2V:-Q/!V!$V6:T<<2T:T<<2T!V6>!V8*V&NV) >w#6*V&pV) >w#6:V<2V:!Vڡ*V&)*&V>͒Sʗ*V&)*&VWR"(V *(V WR"*V*(V ͕SN:VAO7:7!V6**V ^#V!S*V&+S*V&NV) q#p*V&NV) nVR+s#r*(V ͕S—'N:VAO7:7!V6**V >R!S*V&pV) s#r*V&) VR+s#r **V R*V&pV) CS **V q#p:V<2Vk:Vҫ͜:T2FQ!T:/Q2GQ!"IQ!HQ6!V6ON:GR2T 5Q N*FQM ,7*GQM ,7*HQM N:V/҈!N!V6:5Q!V !V6:V/ :V =O!=R ~2T*V&+SFQ DM *V&+SFQ  N`iPS*V&+SFQ  q#p*V&+SFQ  ~ͧ *V&+SFQ  ~7ͧ *V&+SFQ ~2V*V&*V&+SFQ  N "V*V|*V}O:/QH҆MN!V:/Q*V&+SFQ  Hq!V:/QO`iPS*V&+SFQ  q#p *V}2V!V6!V6!V:V# *V&+SFQ ~2V*V&+SFQ  :V2V*V&+SFQ  *V&+SFQ  !V:V/+~!V/H+ |ͧ!V6 :V!V+~!VHc N*V&+SFQ :Vw!V6 :V!V+~!VH N!V:V*V&+SFQ  Hq!V:VO`iPS*V&+SFQ  q#p!V6:V<2V×1:V<2V"͜!V6:5Q!Vo!:V!#N!N:V=O *V&+SFQ NE *V&+SFQ  NE :-Qb!N*V&+SFQ  N ͜:V<2V !T6!V6%NVʹ ͜PNT2V!TT TT N!V6Vʹ ͜:V!FT !!U6+6!W6͌!:W/җ#:R2T͜N;Rʹ :=R2T͜͜N,Qʹ ͜͜:>R2T:2Q<22Q  2Q :2Q=22Q:?R2T:1Q<21Q' 1Q :1Q=21Q:@R2THN3Qʹ ͜:AR2TkN4Qʹ ͜͜:BR2TN:0QAO7NTe:T"*TMV A2W*WM͈ /"Þ":W20Q͜͜:CR2T.Q *.Q&PS"U:DR2TN-Qʹ ͜:-Q/2T:-Q[#:ER2T/Q ͜:FR2TN+Qʹ ͜x#:R2T͜N!W#*W&U 6:W<2W#!W6>!W $*W&U 6$:W<2W#!V6*V&U  !V6TqT TyT Wͧ pT^ pT^ WS#ZS"U!W6>!Wڋ$*W&,V) >w#6:W<2Wh$!"LV:]A$!U6#6!W6>!W$*W&=R 6:W<2W¦$$!U6#6:mD$!U6!T6 Available space in 256 byte pages: $TPA =$, Bank 0 =$, Other banks =$Unable to allocate Dir deblocking buffer space.$Unable to allocate Data deblocking buffer space.$Unable to allocate Data deblocking buffer space.$Drive specified has not been defined. $0FFFFH is an invalid value in the DPH directory BCB address field.$ Setting up Blocking/Deblocking buffers: $ The physical record size is$: $ *** Directory buffer required *** *** and allocated for drive $: *** $ Overlay Directory buffer for drive $: $ Number of directory buffers for drive $: $Minumum number of buffers is 1. $ Number of directory buffers for drive $: $ *** Maximum number of directory buffers *** *** for the current drive is$. *** *** Number of directory buffers reduced *** *** accordingly. *** $ Share buffer(s) with which drive ($:) ? $ *** Data buffer required and *** *** allocated for drive $: *** $ Overlay Data buffer for drive $: $ Number of data buffers for drive $: $Minumum number of buffers is 1. $ Number of data buffers for drive $: $ Share buffer(s) with which drive ($:) ? $ Allocate buffers outside of Common $ Accept new buffer definitions $!W6>!W**W&)*&V>͒S**W&)*&VWR"(V ͕S*(V ͕SHҸ* *(V WR"*V**V ^6 *W&$SQ q#p*W&$SQ  6*(V ͕S*%ͧ!W4*!W6>!W+!"HW}2W>!W=+*W&$SQ HW|S ~H6+*W&$SQ ^#V"HW!W4**W&))lW *HWs#r*W&))  >w#6!W6>!W+*W&$SQ HW|S>͇SH+*W&))lW  *W6 DS+s#r*W&$SQ  6!W4h+!W4*!W6>!W7,*W&+SFQ  *W&W) N#Fq#p*W&+SFQ  *W&7W w!W4+:-QF,!fW6K,!fW6 !W6:W4:fW=2iW!"gW"dW}2 W! W6*T&PS*LViS"bW:-Qڞ,nVbWzS*ViS"bW!W6>!W,*W&W) *W&+SKQ  N#Fq#p*W&$SQ  6!W4£,!W6! W6#6!W6n&))lW  ^#V"JW*W&))lW >͒S:WH3:WE-1&N!W6]&N*W&))lW N#F$ {&N!W6>JWR>fS:WHҚ-!JWVS+s#r!W4g-!JWVS+s#r:W3*W&)*&VWR"(V WR"*V >RZS"^W **V ͕S-!W6-!W6*(V ͕Sc0bB*W&$SQ  >w:-Q.: Wd.! W6*W&$SQ  6&N:WAO7&N.:W{O!=R ~2T&N:WAO7'N*W&$SQ  DMʹ ͜*W&$SQ  ~.*W&$SQ  6.*W&$SQ  6t/:W;O!=R ~2T'N:WAO7>'*W&$SQ  DM  : Wt/! W6*W&$SQ  ~t/A'ͧb'N:WAO7'*W&$SQ  DM  &/*W&$SQ  ~^W͇Sҹ/'N*^WDM$ 'N*W&$SQ  *^Ws*W&$SQ  ~R0:W[O!=R ~2TM(N*W&$SQ  ~AO7(NTe:TL0*TMV A2 W* WM͈ *0/* WMF80/*W&$SQ  : Ww͜c0*WMTCc0 4*(V ͕Sn3!W6*W&$SQ >͒S°0*(V q#p*W&$SQ  6n3bB*W&$SQ  >w:-Qګ1: W1:W1! W6!W6*W&$SQ  6(N:WAO7(N1: W1!W6! W6:Wʨ1:WƋO!=R ~2T(N:WAO7)N*W&$SQ  DMʹ ͜*W&$SQ  ~ґ1*W&$SQ  6è1*W&$SQ  6! W6S2:WKO!=R ~2T)N:WAO76)*W&$SQ  DM  *W&$SQ  >w: WS2! W6*W&$SQ  ~S29)ͧZ)N:WAO7)*W&$SQ  DM  2*W&$SQ  ~$3: WҌ2! W6*W&$SQ  :Ww 3:WkO!=R ~2T)N*W&$SQ  ~AO7)NTe:T 3*TMV A2 W* WM͈ 2Ü2* WMF2Ü2*W&$SQ  : Ww͜*W&$SQ  :Wwn3:U!W]3:W+O!=R ~2T)N*W&$SQ  DMʹ ͜*WMTCn3 4! W6*W6 dWDS+s#r!W4>JWR>fS:WHҿ3!JWVS+s#r!W4Ì3!JWVS+s#rç-!W4n&))lW  ^#V"JW-!T6!W6:W 4bB)NWʹ ͜P,!"PW}2Wo&"TW2W>!Wu5*W&$SQ  ~n5*W&$SQ  ~ >Hһ4:-Q|4!W4á4*W&$SQ !^N#F-S*TW"TW*W&$SQ  ^*PW"PW*W&$SQ  ~ >Hn5:-Q/5!W4*W&$SQ # ~,5*W&$SQ !^N#F-S*TW"TWT5*W&$SQ !^N#F-S*TW"TW*W&$SQ  ^*PW"PW!W4#4*fW&*PW+S*W&) "RW:-Q9W*U"jW*RW*U*TW *LV *V *nV |O:.QO:T2UO:T2T:T2T:T2T|2U!T2.QW"T*T&PS*U "ZW*RW "VW*T"`W*`WW !T͕SC6*`WW 6*`W#"`W6!W6n&))lW  ^#V"JW*W&))lW >͒S:WH9!W6>JWR>fS:WHҶ6!JWVS+s#r!W4Ã6!JWVS+s#r:W8*W&)*&VWR"(V*W&$SQ  >«7*W&$SQ  ~h7*jW6 *jW *VWs#r*W&$SQ VWR+s#r*(V *ZWs#r:fWZWR+s#r:fWjWR+s#rë7*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r*W&$SQ  >£8*W&$SQ  ~48*jW6 *jW *VWs#r*W&$SQ VWR+s#r*(V *ZWs#r:fWZWR+s#r:fWjWR+s#rã8*(V"LW*W&$SQ  >o&)*&VWR"(V!Q  >ʂ8*(V ^#V"NWÐ8*(V ^#V"NW*LW"(V *NWs#r!W4>JWR>fS:WH8!JWVS+s#r!W4ç8!JWVS+s#r6!W4n&))lW  ^#V"JW\6!W6>!Wc9*W&,V) >͒S\9*W&)*&VWR"(V *VWs#r*W&,V) VWR+s#r!W4 9!W6>!W9*W&)*&VWR"(V*W&NV) >͒Sʽ9*(V *VWs#r*W&NV) VWR+s#r*W&pV) >͒S9*(V *VWs#r*W&pV) VWR+s#r!W4h9aB!W6>!W::*W&W) *W&+SFQ  N#Fq#p!W4:*V*RW*nV "RW> U͇SUzSH҇:*TW*U|O:.QO:T2Uá:*TW* U|O:.QO:T2U!U:T2T:T2T:T2T:.Q2.Q* U}pS} URU͊S"`W> U͇SUzSHB;*RW|O:/Q2T*U}pS}URW"\W*T&PS"XW*T&PS*U "VWÇ;*RW*`W|O:/Q2TW*U"\WO`iPS*`W "XW*T&PS* U "VW*RW*\W"T*U|O:T2T*W&)*\W"jW*XW"ZWWTS"U*T"`W*`WW !T͕S;*`WW 6*`W#"`W;!W6!W6!W6:5Q!WS<*W&+SFQ  2W!FQ  ~:W!WHL<:W2W:W2W!W4;:T2FQ!T:/Q2GQ:W<*W&+SFQ  O:T<*W&+SFQ  N`iPS!͕S"`W!FQ :T w*W&+SFQ  N`iPS*`WiS!q#p!W6n&))lW  ^#V"JW*W&))lW >͒S:WHғA!W6>JWR>fS:WHh=!JWVS+s#r!W45=!JWVS+s#r:WxA*W&)*&VWR"(V*W&$SQ  >0?*W&$SQ  ~>*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r0?*\W*ZWs#r*(V *XWs#r*XW##"XW*\W##"\W!W6*W&$SQ  ~!W ?*W&$SQ ^#V͛ 2W*jW6*W&+SFQ N`iPS!N`iPS!͕S  *jW q#p *jW 6*W&+SFQ  *W&$SQ |S+s#r:fWZWR+s#r *jW s#r:fWjWR+s#r!W46>:fWjW͇S+s#r! >w#6:fWjWR+s#r*W&$SQ  >1A*W&$SQ  ~¤?*(V"LW*W&$SQ  n&)*&VWR"(V ^#V"NW*LW"(V *NWs#r1A*\W*ZWs#r*(V *XWs#r*XW##"XW*\W##"\W!W6*W&$SQ  ~!W A*W&$SQ  ~ҩ@*W&$SQ ^#V͛ 2W*jW6*W&+SFQ N`iPS!N`iPS!͕S  *jW q#p*W&+SFQ   *jW w*W&+SFQ  *W&$SQ |S+s#r@*jW6 *jW *VWs#r*W&$SQ VWR+s#r *jW 6:fWZWR+s#r *jW s#r:fWjWR+s#r!W4?:fWjW͇S+s#r! >w#6:fWjWR+s#r!W4>JWR>fS:WHhA!JWVS+s#r!W45A!JWVS+s#ru=!W4n&))lW  ^#V"JW=!W6>!WA*W&7W *W&+SFQ  w!W4˜A!W6>!WaB*W&)*&VWR"(V*W&NV) >͒S"B*(V *ZWs#r*W&NV) ZWR+s#r*W&pV) >͒SZB*(V *ZWs#r*W&pV) ZWR+s#r!W4A!"W"W!W6:5Q!WB*W&+SFQ  ~¶B*W&+SFQ  VS*W"WB*W&+SFQ  VS*W"W!W4pB$N%N!bWVSDM$ :-QMC%N*WDM$ :U C$%N*WDM$ >W͇S>W͇SHHC!W6MC!W6͜͜!Ws+q*W&$SQ ^#V"W:-QڋC:fWWRbW͊S+s#rF!iW55:W®D*W&$SQ  ~2W!W6:W!WګD!fW:iWYD!iW6*gW#"gW!W6!W6!W6:5Q!W7D*W&+SFQ  2W!FQ  ~:W!WH0D:W2W:W2W!W4C*W&+SFQ  S+s#rcD!fW:iW2iW*W͛ 2W…D4%ͧ>äD*W&+SFQ  WzS+s#r!W4±CF*W&$SQ  ~2W!W6:W!WF!fW:iWoE!iW6*gW#"gW!W6!W6!W6:5Q!WME*W&+SFQ  2W!FQ  ~:W!WHFE:W2W:W2W!W4D*W&+SFQ  S+s#ryE!fW:iW2iW*W&$SQ  ~ڼEWbWzS+s#rYS:/QpSҹEd%ͧ>E*W͛ 2WE%ͧ>E*W&+SFQ  WzS+s#r!W4D>!Wq*W6 dWR>fS'F>%ͧ>ERROR: $ at line $Missing parameter variable$Equals (=) delimiter missing$Invalid drive ignored$Invalid character$Invalid parameter variable$!"WWͧ !W6!W6:W GG:WG͈K2W:WFIGF GF!Wr+s+q:U2W!U65FN*WDMN>FN*WDMZ :WCG.͜:W2U:WoG!W6TlG!W6sG!W4MG*W&W ~2W:W :W H:W HG:W ·G*W#"WMG*W&W ~2WÄG:Wa/>z!W/HG:W_2W:WG!W6:W!W6:W/:W/HI!W6>!W/H*W&W 6 !W4HtG2W!W6:W:W=H:W H:W/H~H*W&W :WwtG2W!W4:H:W=:W H:W/HҧHtG2W~H:W I:W=>!WHH!W6 I:W=HHF GH:WHcF G:W :W/H$ ItG2WHGtG2W!W6!T:W:W H:W/H[I*W&T :Ww!W4~`i+wtG2WI:W :W/HxItG2W[I!W6#6>!W҇K *W&+S P  ^#V"W! P  ~2WJ:WI:WA2WI:W0/>9!W/HI:W02WI:WA 2W *W&+S P  ^*W&+S*W"W*W&T ~?[J *W&+S P  :WO!=R 6!U6!W4!T5>!T҇K:WʧJ*W&T ~A/>P/HҜJ*W&T ~A*WwäJF GÇK:WJ*W&T ~Y*WwÇK!W6*W6!W6:T=!WڇK:W!WO!T ~2W, K*W#"W6!W6ÀK:W#K!W6 ÀK:W02W:W> !WHQK>!WLK:W2WQK!W6!W:WxK*W^*W&+S*W& sÀKF G!W4J!W6!W6:W:W/HK!W6:W *W&+S P *W& *W&W HK!W4éK:WK!W6K!W4ÒK:WL>:WWͧ T. T~ !W6!W6>!WN!W6#n& +S P  ~2W!W6:W:W/H N!W6>!WڞL'N *W&+S P *W& *W&W w!W4gL:W°L!W6L:WL:WA*W&W wL:W L:W0*W&W wL:WA *W&W w'N*W&W 6 'N*W&W 6='N*W&W 6  *W&+S P  !^*W&+SR"W:WmM'N*W~A*W&W wM:WʞM'N*W~ҐM*W&W 6YÛM*W&W 6NM*WNbN:WM'N*W&W 6,*W#"W*WNbN'N*W&W 6,*W#"W*WNbN'N*W&W 6 'N*W&W 6 !W4PL!W4'L>!W NT^ T :W]NT^ !W6>!WUN*W&W 6!W4:N!W6aN!W4!Wq'N:WO! *W&W w'N:WO! *W&W wO*TDM}oN*T†O]!O> 2 PW:TgxʀO { O: PO*T!O†O~#o}o|O<O:TzO<.O:TƜzO<8O:TzO:TzO:TotOzO:TgN!|!|PRTMSG ,QPAGWID 2QPAGLEN 1QBACKSPC 3QRUBOUT 4QBOOTDRV 0QMEMTOP .QBNKSWT -QCOMBAS /QLERROR  +QNUMSEGS  5QMEMSEG00 KQHASHDRVA6QALTBNKSA +QNDIRRECA ;QNDTARECA KQODIRDRVA [QODTADRVA kQOVLYDIRA {QOVLYDTAA QCRDATAF ;RDBLALV ))덑o|gS =S^#V))) DM!>)):S =2S_og^#V) PS^#V|g}o ZS_{ozgO{ozgi`N#Fogo&og_{_z#WBNKBIOS3SPRRESBDOS3SPRBNKBDOS3SPRCPM3 SYSGENCPM DAT . $PRTMSG = Y PAGWID = 4F PAGLEN = 17 BACKSPC = N RUBOUT = N BOOTDRV = A MEMTOP = FF BNKSWT = Y COMBAS = B8 LERROR = Y NUMSEGS = 01 MEMSEG00 = 0F,56,00 MEMSEG01 = 0D,84,00 MEMSEG02 = 00,C0,03 MEMSEG03 = 00,C0,04 MEMSEG04 = 00,C0,05 MEMSEG05 = 00,C0,06 MEMSEG06 = 00,C0,07 MEMSEG07 = 00,C0,08 MEMSEG08 = 00,C0,09 MEMSEG09 = 00,C0,0A MEMSEG0A = 00,C0,0B MEMSEG0B = 00,C0,0C MEMSEG0C = 00,C0,0D MEMSEG0D = 00,C0,0E MEMSEG0E = 00,C0,0F MEMSEG0F = 00,C0,10 HASHDRVA = Y HASHDRVB = Y HASHDRVC = Y HASHDRVD = N HASHDRVE = N HASHDRVF = Y HASHDRVG = Y HASHDRVH = Y HASHDRVI = Y HASHDRVJ = Y HASHDRVK = Y HASHDRVL = Y HASHDRVM = Y HASHDRVN = Y HASHDRVO = Y HASHDRVP = N ALTBNKSA = N ALTBNKSB = N ALTBNKSC = N ALTBNKSD = N ALTBNKSE = N ALTBNKSF = N ALTBNKSG = N ALTBNKSH = N ALTBNKSI = N ALTBNKSJ = N ALTBNKSK = N ALTBNKSL = N ALTBNKSM = N ALTBNKSN = N ALTBNKSO = N ALTBNKSP = N NDIRRECA = 08 NDIRRECB = 28 NDIRRECC = 28 NDIRRECD = 00 NDIRRECE = 00 NDIRRE$CF = 20 NDIRRECG = 08 NDIRRECH = 08 NDIRRECI = 01 NDIRRECJ = 01 NDIRRECK = 08 NDIRRECL = 01 NDIRRECM = 01 NDIRRECN = 01 NDIRRECO = 01 NDIRRECP = 08 NDTARECA = 00 NDTARECB = 00 NDTARECC = 00 NDTARECD = 00 NDTARECE = 00 NDTARECF = 00 NDTARECG = 00 NDTARECH = 00 NDTARECI = 01 NDTARECJ = 01 NDTARECK = 00 NDTARECL = 01 NDTARECM = 01 NDTARECN = 01 NDTARECO = 01 NDTARECP = 00 ODIRDRVA = A ODIRDRVB = A ODIRDRVC = A ODIRDRVD = A ODIRDRVE = A ODIRDRVF = A ODIRDRVG = A ODIRDRVH = A ODIRDRVI = A ODIRDRVJ = A ODIRDRVK = A ODIRDRVL = A ODIRDRVM = A ODIRDRVN = A ODIRDRVO = A ODIRDRVP = A ODTADRVA = A ODTADRVB = A ODTADRVC = A ODTADRVD = A ODTADRVE = A ODTADRVF = A ODTADRVG = A ODTADRVH = A ODTADRVI = A ODTADRVJ = A ODTADRVK = A ODTADRVL = A ODTADRVM = A ODTADRVN = A ODTADRVO = A ODTADRVP = A OVLYDIRA = Y OVLYDIRB = Y OVLYDIRC = Y OVLYDIRD = Y OVLYDIRE = Y OVLYDIRF = Y OVLYDIRG = Y OVLYDIRH = Y OVLYDIRI = Y OVLYDIRJ = Y OVLYDIRK = Y OVLYDIRL = Y OVLYDIRM = Y OVLYDIRN = Y OVLYDIRO = Y OVLYDIRP = Y OVLYDTAA = Y OVLYDTAB = Y OVLYDTAC = Y OVLYDTAD = Y OVLYDTAE = Y OVLYDTAF = Y OVLYDTAG = Y OVLYDTAH = Y OVLYDTAI = Y OVLYDTAJ = Y OVLYDTAK = Y OVLYDTAL = Y OVLYDTAM = Y OVLYDTAN = Y OVLYDTAO = Y OVLYDTAP = Y CRDATAF = N DBLALV = Y LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,FDRIVES,SCB,EXTMEMF ERA BNKBIOS3.SYM %LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,WDRIVES,SCB,EXTMEM$1 ERA BNKBIOS3.SYM GET 1âCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]SYSIN $$$Getting console input from $INPUT~FROM~FILE~STATUS~CONDITIONAL~FALSE~TRUE~CONSOLE~CONIN:~AUXILIARY~AUXIN:~END~CON:~AUX:~NOT~ECHO~FILTERED~SYSTEM~PROGRAM #).6=GNRW\`enu|[]=, ./;Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File not found$Enter Password: $file: $SUBMIT of $GET from $ stopped$console$GET from $ stopped$console$Requires CP/M 3.0$CP/M 3 GET Version 3.0 $Get console input from a file $Enter file: $11N}0N|HG+\Yr'2ͅ !6 *& 6+!6:!D*& NZ *& w!4!":2"ͱ!6*& ~ w!4a!"+~2*& "!6!6%*: : H:HI%*:%*:%*:!6*DMͱF: : H:HÀ Fͻ : T :: H: Hғ: †̀ Ó%*:¨%*:½%*:*DMͱ:: H: H̀ ͻ v!q*&!p+q* !s+p+q*:w#6* *#"N#Fy  !p+q*!p+q*!q*&-!q:2!61!s+q:2!6*&"1m!p+q*m!p+q*<!q!6*&: >*&: :":!4!r+s+p+q+p+q: Di !6ͯ*~ʙ*~2*M2!6::ڃÓ*M2nãͯO:2 :22*~2!6*~2ͯ*~)*N! ** =2!!6!6:!:ø!4 ø*6 *:w:+s#ri :S*#"X!6:2O* ~2*&*:9ʩ!4*:w*&*:˜*&*~2j*6*~2Y:2!6*#~2!4N* :!6*&*:!6!4N* ~2*&*~2*M2:> !HV !4N* ~2*M2% :2#+s#r*N2!E„ *#"i   !s+q+p+q:=2ʺ *:w*#"Ý !q!6*""͐2:( !6(*&*&!s*&!s:C ::H, *+"C :C :++s#rͅ !6:!i *"*M !4K *M :Ҁ FÆ Y:Aґ ͅ *M! ^#Vp      ͅ !q!6:! *N*#"!4 ͅ !6:!V *!C !6^H  *#"!4 ͅ !q:at :{t : :OZ 2:ͅ ͅ l ͐ !6>! x 2 *&l :w:  : Ò : : Ò :=2O!l 6 ë :% !4¢ W2!p+q*~A *~@O:!6> !ڄ : \ .*&*~ } *&*>O!4F ">ʰ *++"~Ұ "lp̀\`"̀*} *|2 : ͆ ͅ lp\`" *"ͻ ͐0 ͅ \ ͯ!p+q!6+6>!W *M[ :O[ !47 :!q*&*>*& z !6: ʍ ͻ "> "*DM) ҽ  *DM ͅ Í #: ͻ ">7*DM) 7"+*DM 6ͅ ">[?p͐0hͅ *DM !q"!+s#r:ʨ:=+s#r*DM!p+q*"!\"b"ͻ >ͅ *#"*~[ͻ :: H'%*:„:?ͻ %*:\yÁ:lyÁ:|yÁͻ $!6:£!6%*::Һ!6ÿ!6$::!6!6$::!6!6$::!6!6$ͻ ͅ !p+q*~ ~ HR*#"1*~^>>!`i^#V#~#fo͟]ƒywôG:±xAa{Ҙ_ ʫ ʫß`i~#~2#~2#~2*| \!\~2.n~`>26!.t~:s}>26!N#F#*"^q#Vp"N#F##"^q#Vp"4!7 !6ë7 \\m>_ 1:~# yɍWARNING: Cannot redirect from BIOS $ERROR: Auxiliary device redirection not implemented $ERROR: Insufficient Memory $""SYSIN SUB_og_ogDM!>))덑o|g =_og_{ozgi`N#Fogo&og~FGET :<***.n6.t6 LL!p:~y !6 <ʊ~"x!F#fh!:~!«!>w~:!5*.~w:; :~!9"1W:.~ !5< W@w.tEy!h g ={  ͩ* . +6.w   *ͩ2*.6#6*.~w#~=~# Ʌo$x(\!54  !F6ȷx(\>^\@_: N#x€ʹ> ʹ ʹŸ*.>wm#wM~xµmp> \ 8>""SYSIN SUB hhhhhhhhhhhhhh 151282 COPYR '82 DRI gggggggggggggggggggggggggggggg"D! BH!!$@ !HA@  H!@  @BP&1?:P2ÄCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl] ERROR: $ $ Press RETURN to continue $ $Reading HELP.HLP index.$Too many entries in Index Table. Not enough memory.$ $ Creating HELP.HLP....$$ HELP DATHELP.DAT not on current drive.$Too many entries in Index Table. Not enough memory.$$ HELP HLPUnable to Make HELP.HLP.$Writing file HELP.HLP.$Writing file HELP.HLP.$Closing file HELP.DAT.$Closing file HELP.HLP.$HELP.HLP created $ Extracting data....$HELP HLPUnable to find file HELP.HLP.$HELP DATUnable to Make HELP.DAT.$Writing file HELP.DAT.$Unable to Close HELP.HLP.$Unable to Close HELP.DAT.$Extraction complete HELP.DAT created $ Topics available:$ ENTER .subtopic FOR INFORMATION ON THE FOLLOWING SUBTOPICS:$ $ $ $Reading file HELP.HLP.$ HELP> $Requires CP/M Version 3$,HELP HLP HELP UTILITY V1.1 At "HELP>" enter topic {,subtopic}... EXAMPLE: HELP> DIR BUILT-IN $? HELP Topic:$Not found$No HELP.HLP file on the default drive.$1?1?!E6!,6͈"-*-|*-}0HҷN1=2/1<_! p{201!C6!C6ͷ 2j:A+::BJ: \u\͡2 :?/;1X:j\!)6X!,62j:j&!)61x͛zdʛ͚=x͛˜!)6,V 2E H:E/ ,V 2E:E/ IX,V 2E H*jM.,V 2E H,V 2E HPX,V 2E H!)6:E/2j\\2D:ZNEv!Kq*K&!Mp+q*L !Op+q*N !Pq*P& !Rp+q*Q!Tp+q *S 6 *S 6*S!Vp+q*U!Xp+q*W!Zp+q*Y!\p+q *[ 6 *[ 6*[!^p+q*]!!`p+q*_!bp+q*a$!er+s+qX*dDMXX:ctE!jr+s+p+q+q*f*gDM*i -’!nr+s+p+q!o6#6:p *p&*k~ H *p&*k*p&*m  *p&*k*p&*m  !o6 !o6!p6 :p<2pí:o!qq:q<2q>!qR \H !q6R !E6!q6:q!sp+q!t6:@/!C *r~<*rwO:/ X*r6*r~ž x*rwÉ X*r~½ \*rwE *r~ !t6*r6  H *r6 H:tͼ"u*u"w!{6!"y:{/>!wH҇ >y)))) DM%\O \o&"yN*y)))) ~$e !{6:{/҄ >w+s#r*y"y %>w:{/HҶ \o&"yN!|6:! !|6:!| *|& ~ *|& 6 *|& ~, *|& 6 :|<2| !|6!:|*|& ~ HA :|<2| *|& ~.d :)2}*|& 6 i !}6:}2|> !|ڛ *|&͏x u:|<2|o :}2|!~6!6#6*~& ~:/H! *~& ~  !6*~& ~ *~& ~[H*~& ~H: :| HHҥ *~& >`*~& ~{Hp *~& ~ *|&͏x *& HqÔ *~& *|&͏x *& w:~<2~:<2 :|<2|> !|! !6 *~& ~[ :|=o&͏x ~ :|=2|*|&͏x 6[:~<2~:|<2|!6 :~<2~î !?6#6#6#6>!|'!6: '*&͏x ~[*&͏ ~C !A6:|==2|*&͏ ~E¤ !B6:|==2|*&͏ ~N !@6:|==2|*&͏ ~L !?6#6:|==2|*&͏ ~ :|==2|:|=2|!6 :<2= :|&X!6>!` *&)))) >u:<26!6>#w#6ͼ"*" \Ju\͡WN!E6:E/\H"!6:ր:E/H*& ~!E6*& ~/!6:E/*& ~/H**M! 2:<2::E/H*& ~0*))))  w*M! 2!6: :E/H*& ~ H*& >`*& ~{H*& ~ *)))) *& w*& *)))) *& w*M! 2:<2i:E/\5*))))  }u*))))  #~u*))))  N#F *))))  q#p*))))  :w*#"*!p>ͭ:<2>+s#r>:E/H\2vN*"*! *)))) u*"*M! 2þâ%:<2 u͑lF2F͑\2NfuF2!"*+!*))))  :d*))))  q#p*"҇!":=!6!ͣ DM%)2͑F2F͑\2N*"|u\2!E6:E/!"*":E/>!HҴ!ͣ DM%\ʝ!E6ñ>+s#r*#"d!"*+!!ͣ DM%2͑\2N*"ҺP\02NC*NBXUX \ku\͡oxN FuF͑F\2N%!6\2:/H:Y$!6è!E6:!E6F2ͼ":E/ҽ!"*":E/>!H]!ͣ DM%\F!E6Z>+s#r*#" !"*+!ں!ͣ DM%FʭF2F͑\2N*"c\NFF͑NX!"}22:)&<2: ,:)!"#**"!"1!6*"!":/G*)))) ~$^!6D*))))  :!:/Ұ!6,V 2:›0XáCX,V 2X**0&p>ͭ,V 2 H!6> !*& 6 :<2!6$ *)))) DMuX*#"=*))))  ~!=!6*#"=:],V 2X%!6#6!6#6!":/:/HҼ*)))) ~$ʴ*))))  :)<{*)&͏x *)))) ͛2:q *)))) *)&͏x u:)<2):/:)2!6>!)n&͏x ~ H*)&͏x ~[Hb!6!6n*#"!6x*#"ñ:Ҫ*))))  :Ң*#"ç!6ñ*#"ù!6z:**#"**))))  DM}u*))))  #DM~u!6*))))  ~2D*))))  ~2):!q!6!::E/Hҙ,V 2E:E/Җ!6:!{X:<2a*&͏x DMX:<27 H*)M.:E/ҷ,V 2E:E/\\2DN!6:/:E/H\H:D=2:<2O>/:/H*& ~29!E6!6:/:E/H:*& ~/HHҗ:<2*M! 2*& :=O! w>:§!6ò*& 6$:E/:/H: :@/H,V 2E*MH>!X!6 !D6!E6u,V 2Xh*& 6!,6ͷ 2::?/H_1X:_ogDM!>))덑o|g҉ =wDM!>))Ҟ =–^#V) §_{ozgi`N#Fogo&og_{_z#W $COMMANDS CONVENTIONS 3CNTRLCHARS COPYSYS $VDATE &dEXAMPLES (3DEVICE *:OPTIONS 0EXAMPLES 5 DIR ?TBUILT-IN BVEXAMPLES FWITHOPTIONS N)OPTIONS Q~EXAMPLES bjDUMP kED lKCOMMANDS n7EXAMPLES kERASE mOPTION pEXAMPLES lFILESPEC GENCOM eOPTIONS EXAMPLES |GET OPTIONS uEXAMPLES HELP jHEXCOM ZINITDIR LIB *OPTIONS GMODIFIERS *EXAMPLES 7LINK OPTIONS oEXAMPLES MAC EXAMPLES \OPTIONS $PATCH ]PIP (COPY) CEXAMPLES 6OPTIONS &)PUT /'OPTIONS 5MEXAMPLES >-RENAME D9EXAMPLES GRMAC NvOPTIONS PREXAMPLE T\SAVE VzEXAMPLE ZSET `LABEL c_EXAMPLES djPASSWORDS fbMODES i#ATTRIBUTES o&EXAMPLES wDEFAULT |YTIME-STAMPS ~OPTIONS -EXAMPLES ^DRIVES 4SETDEF MEXAMPLES mSHOW WEXAMPLES pSID COMMANDS bEXAMPLES eUTILITIES uSUBMIT 4SUBFILE EXECUTE  PROFILE.SUB  TYPE *EXAMPLES GUSER IEXAMPLES ZXREF $ $ )`$ j" ///1commands CP/M 3 Command Format: A>COMMAND {command tail} A CP/M 3 command line is composed of a command, an optional command tail, and a carriage return. The command is the name or filename of a program to be executed. The optional command tail can consist of a drive specification, one or more file specifications, and some options or parameters. ///2conventions COMMAND CONVENTIONS The following special symbols define command syntax. {} surrounds an optional item. | separates alternative items in a command line. indicates' a carriage return. ^ indicates the Control Key. n substitute a number for n. s substitute a string (group) of characters for s. o substitute an option or option list for o. [] type square brackets to enclose an option list. () type parens to enclose a range of options within an option list. RW Read-Write attribute - opposite of RO RO Read-Only attribute - opposite of RW SYS System attribute - opposite of DIR DIR Directory attribute - opposite of SYS ... preceding element can be repeated as many times as desired. * wildcard: replaces all or part of a filename and/or filetype. ? wildcard: replaces any single character in the same position of a filename and/or filetype. ///1cntrlchars Control Character Function CTRL-A moves cursor one character to the left. Banked system only. CTRL-B moves cursor from beginning to end of command line and back without affecting command. Banked system only. CTRL-C stops executing program when entered at the system prompt or after CTRL-S. CTRL-E forces a physical carriage return without sending command to CP/M 3. CTRL-F moves cursor one character to the right. Banked system only. CTRL-G deletes character at current cursor position if in the middle of a line. Banked system only. CTRL-I same as the TAB key. CTRL-H delete character to the left of cursor. CTRL-J moves cursor to the left of the command line and sends command to CP/M 3. Line feed, has same effect as carriage return. CTRL-K deletes character at cursor and all characters to the right. CTRL-M same as carriage return. CTRL-P echoes console output to the list device. CTRL-Q restarts screen scrolling after a CTRL-S. CTRL-R retypes the characters to the left of the cursor  on a new line; updates the command line buffer. CTRL-S stops screen scrolling. CTRL-U updates the command line buffer to contain the characters to the left of the cursor; deletes current line. CTRL-W recalls previous command line if current line is empty; otherwise moves cursor to end of line. CTRL-J,-M,-R,-U and RETURN update the command line buffer for recall with CTRL-W. Banked system only. CTRL-X deletes all characters to the left of the cursor. ///1COPYSYS Syntax: COPYSYS Explanation: COPYSYS copies the CP/M 3 system from a CP/M 3 system diskette to another diskette. The new diskette must have the same format as the original system diskette. Example: A>COPYSYS ///1DATE Syntax: DATE {CONTINUOUS} DATE {time-specification} DATE SET Explanation: The DATE command lets you display and set the date and time of day. ///2Examples A>DATE Displays the current date and time. A>DATE C Displays the date and time continuously. A>DATE 08/14/82 10:30:0 Sets the date and time. A>DATE SET Prompts for date and time entries. ///1DEVICE Syntax: DEVICE { NAMES | VALUES | physical-dev | logical-dev} DEVICE logical-dev=physical-dev {option} {,physical-dev {option},...} DEVICE logical-dev = NULL DEVICE physical-dev {option} DEVICE CONSOLE [ PAGE | COLUMNS = columns | LINES = lines] Explanation: DEVICE displays current logical device assignments and physical device names. DEVICE assigns logical devices to peripheral devices attached to the computer. DEVICE also sets the communications protocol and speed of a peripheral device, and displays or sets the current console screen size. ///2Options [ XON | NOXON | baud-rate ] XON refers to the XON/XOFF communications protocol. NOXON indicates no protocol and the computer sends data to the device whether or not the device is ready to receive it. baud-rate is the speed of the device. The system accepts the following baud rates: 50 75 110 134 150 300 600 1200 1800 2400 3600 4800 7200 9600 19200 ///2Examples A>DEVICE Displays the physical devices and current assignments of the logical devices in the system. A>DEVICE NAMES Lists the physical devices with a summary of the device characteristics. A>DEVICE VALUES Displays the current logical device assignments. A>DEVICE CRT Displays the at'tributes of the physical device CRT. A>DEVICE CON Displays the assignment of the logical device CON: A>DEVICE CONOUT:=LPT,CRT Assigns the system console output (CONOUT:) to the printer (LPT) and the screen (CRT). A>DEVICE AUXIN:=CRT2 [XON,9600] Assigns the auxiliary logical input device (AUXIN:) to the physical device CRT using protocol XON/XOFF and sets the transmission rate for the device at 9600. A>DEVICE LST:=NULL Disconnects the list output logical device (LST:). A>DEVICE LPT [XON,9600] Sets the XON/XOFF protocol for the physical device LPT and sets the transmission speed at 9600. A>DEVICE CONSOLE [PAGE] Displays the current console page width in columns and length in lines. A>DEVICE CONSOLE [COLUMNS=40 LINES=16] Sets the screen size to 40 columns and 16 lines. ///1DIR The DIR command displays the names of files and the characteristics associated with the files. The DIR command has three distinct references: DIR DIRS DIR with Options DIR and DIRS are built-in utilities. DIR with Options is a transient utility and must be loaded into memory from the disk. ///2Built-in Syntax: DIR {d:} DIR {filespec} DIRS {d:} DIRS {filespec} Explanation: The DIR and DIRS Built-in commands display the names of files cataloged in the directory of an on-line disk. DIR lists the names of files in the current user number that have the Directory (DIR) attribute. DIR accepts the * and ? wildcards in the file specification. ///3Examples A>DIR Displays all files in user 0 on drive A that have the Directory attribute. A>DIR B: Displays all DIR files in user 0 on drive B. 2A>DIR C:ZIPPY.DAT Displays the name ZIPPY.DAT if the file is in user 2 on drive C. 4A>DIR *.BAS Displays all DIR files with filetype BAS in user 4 on drive A. B3>DIR X*.C?D Displays all DIR files in user 3 on drive B whose filename begins with the letter X, and whose three character filetype contains the first character C and last character D. A>DIRS Displays all files for user 0 on drive A that have the system (SYS) attribute. A>DIRS *.COM Displays all SYS files with filetype COM on drive A in user 0. A command (.COM) file in user 0 with the system attribute can be accessed from any user number on that drive, and from any drive in the search chain (see SETDEF). ///2withOptions Syntax: DIR {d:} [options] DIR {filespec} {filespec} ... [options] Explanation: The DIR command with options is an enhanced version of the DIR built-in command and displays your files in a variety of ways. DIR can search for files on any or all drives, for any or all user numbers. One or two letters is sufficient to identify an option. You need not type the right hand square bracket. ///3Options Option Function ATT displays the file attributes. DATE displays date and time stamps of files. DIR displays only files that have the DIR attribute. DRIVE=ALL displays files on all on-line drives. DRIVE=(A,B,C,...,P) displays files on the drives specified. DRIVE=d displays files on the drive specified by d. EXCLUDE displays files that DO NOT MATCH the files specified in the command line. FF sends an initial form feed to the printer device if the printer has been activated by CTRL-P. FULL shows the name, size, number of 128-byte records, and attributes of the files. If there is a directory label on the drive, DIR shows the password protection mode and the time stamps. If there is no directory label, DIR displays two file entries on a line, omitting the password and time stamp columns. The display is alphabetically sorted. (See SET for a description of file attributes, directory labels, passwords and protection modes.) LENGTH=n displays n lines of printer output before inserting a table heading. n is a number between 5 and 65536. MESSAGE displays the names of drives and user numbers DIR is searching. NOSORT displays files in the order it finds them on the disk. RO displays only the files that have the Read-Only attribute. RW displays only the files that are set to Read-Write. SIZE displays the filename and size in kilobytes (1024 ( bytes). SYS displays only the files that have the SYS attribute. USER=ALL displays all files in all user numbers for the default or specified drive. USER=n displays the files in the user number specified by n. USER=(0,1,...,15) displays files under the user numbers specified. ///3Examples A>DIR C: [FULL] Displays full set of characteristics for all files in user 0 on drive C. A>DIR C: [DATE] Lists the files on drive C and their dates. A>DIR D: [RW,SYS] Displays all files in user 0 on drive D with Read-Write and System attributes. 3A>DIR [USER=ALL, DRIVE=ALL] Displays all the files in all user numbers (0-15) in all on- line drives. B6>DIR [exclude] *.DAT Lists all the files on drive B in user 6 that do not have a filetype of .DAT. 3B>DIR [SIZE] *.PLI *.COM *.ASM Displays all the files of type PLI, COM, and ASM in user 3 on drive B in size display format. A>DIR [drive=all user=all] TESTFILE.BOB DIR displays the filename TESTFILE.BOB if it is found on any drive in any user number. A>DIR [size,rw] D: DIR lists each Read-Write file that resides on Drive D, with its size in kilobytes. Note that D: is equivalent to D:*.*. ///1DUMP Syntax: DUMP filespec Explanation: DUMP displays the contents of a file in hexadecimal and ASCII format. Example: A>DUMP ABC.TEX ///1ed Format: ED input-filespec {d:|output-filespec} Explanation: Character file editor. To redirect or rename the new version of the file specify the destination drive or destination filespec. ///2commands ED Command Summary Command Action nA append n lines from original file to memory buffer 0A append file until buffer is one half full #A append file until buffer is full (or end of file) B, -B move CP to the beginning (B) or bottom (-B) of buffer nC, -nC move CP n characters forward (C) or back (-C) through buffer nD, -nD delete n characters before (-D) or from (D) the CP E save new file and return to CP/M-86 Fstring{^Z} find character string H save new file, reedit, use new file as original file I enter insert mode Istring{^Z} insert string at CP Jsearch_str^Zins_str^Zdel_to_str juxtapose strings nK, -nK delete (kill) n lines from the CP nL, -nL, 0L move CP n lines nMcommands execute commands n times n, -n move CP n lines and display that line n: move to line n :ncommand execute command through line n Nstring{^Z} extended find string O return to original file nP, -nP  move CP 23 lines forward and display 23 lines at console Q abandon new file, return to CP/M-86 R{^Z} read X$$$$$$$.LIB file into buffer Rfilespec{^Z} read filespec into buffer Sdelete string^Zinsert string substitute string nT, -nT, 0T type n lines U, -U upper-case translation V, -V line numbering on/off 0V display free buffer space nW write n lines to new file 0W write until buffer is half empty nX write or append n lines to X$$$$$$$.LIB nXfilespec{^Z} write n lines to filespec; append if previous xcommand applied to same file 0x{^Z} delete file X$$$$$$$.LIB 0xfilespec{^Z} delete filespec nZ wait n seconds Note: CP points to the current character being referenced in the edit buffer. Use {^Z} to separate multiple commands on the same line. ///2Examples A>ED TEST.DAT A>ED TEST.DAT B: A>ED TEST.DAT TEST2.DAT A>ED TEST.DAT B:TEST2.DAT ///1erase Syntax: ERASE {filespec} {[CONFIRM]} Explanation: The ERASE command removes one or more files from the directory of a disk. Wildcard characters are accepted in the filespec. Directory and data space are automatically reclaimed for later use by another file. The ERASE command can be abbreviated to ERA. ///2Option [CONFIRM] option informs the system to prompt for verification before erasing each file that matches the filespec. CONFIRM can be abbreviated to C. ///2Examples A>ERASE X.PAS Removes the file X.PAS from the disk in drive A. A>ERA *.PRN Confirm (Y/N)?Y All files with the filetype PRN are removed from the disk in drive A. B>ERA A:MY*.* [CONFIRM] Each file on drive A with a fi(lename that begins with MY is displayed with a question mark for confirmation. Type Y to erase the file displayed, N to keep the file. A>ERA B:*.* Confirm (Y/N)?Y All files on drive B are removed from the disk. ///1filespec FILESPEC FORMAT CP/M 3 identifies every file by its unique file specification, which can consist of four parts: the drive specification, the filename, the filetype and the password. The term "filespec" indicates any valid combination of the four parts of a file specification, all separated by their appropriate delimiters. A colon must follow a drive letter. A period must precede a filetype. A semicolon must precede a password. The symbols and rules for the parts of a file specification follow: d: drivespec optional single alpha character (A-P) filename filename 1-8 letters and/or numbers typ filetype optional 0-3 letters and/or numbers password password optional 0-8 letters and/or numbers Valid combinations of the elements of a CP/M 3 file specification are: filename d:filename filename.typ d:filename.typ filename;password d:filename;password filename.typ;password d:filename.typ;password If you do not include a drive specifier, CP/M 3 automatically uses the default drive. Some CP/M 3 commands accept wildcard (* and ?) characters in the filename and/or filetype parts of the command tail. A wildcard in the command line can in one command reference many matching files on the default or specified user number and drive. (See Commands). ///1GENCOM Syntax: GENCOM {COM-filespec} {RSX-filespec} ... {[LOADER | NULL | SCB=(offset,value)]} Explanation: The GENCOM command creates a special COM file with attached RSX files. The GENCOM command can also restore a previously GENCOMed file to the original COM file without the header and RSX's. GENCOM can also attach header records to COM files. ///2Options LOADER sets a flag to keep the program loader active. NULL indicates that only RSX files are specified. GENCOM creates a dummy COM file for the RSX files. The output COM filename is taken from the filename of the first RSX-filespec. SCB=(offset,value) sets the System Control Block from the program by using the hex values specified by (offset,value). ///2Examples A>GENCOM MYPROG PROG1 PROG2 Generates a new COM file MYPROG.COM with attached RSX's PROG1 and PROG2. A>GENCOM PROG1 PROG2 [NULL] Creates a COM file PROG1.COM with RSX's PROG1 and PROG2. A>GENCOM MYPROG  GENCOM takes MYPROG.COM, strips off the header and deletes all attached RSX's to restore it to its original COM format. A>GENCOM MYPROG PROG1 PROG2 GENCOM looks at the already-GENCOMed file MYPROG.COM to see if PROG1.RSX and PROG2.RSX are already attached RSX files in the module. If either one is already attached, GENCOM replaces it with the new RSX module. Otherwise, GENCOM appends the specified RSX files to the COM file. ///1GET Syntax: GET {CONSOLE INPUT FROM} FILE filespec{[{ECHO|NO ECHO} | SYSTEM]} GET {CONSOLE INPUT FROM} CONSOLE Explanation: GET directs the system to take console input from a file for the next system command or user program entered at the console. Console input is taken from a file until the program terminates. If the file is exhausted before program input is terminated, the program looks for subsequent input from the console. If the program terminates before exhausting all its input, the system reverts back to the console for console input. With the SYSTEM option, the system immediately goes to the specified file for console input. The system reverts to the console for input when it reaches the end of file. Re-direct the system to the console for console input with the GET CONSOLE INPUT FROM CONSOLE command as a command line in the input file. ///2Options ECHO specifies that input is echoed to the console. This is the default option. NO ECHO specifies that file input is not echoed to the console. The program output and the system prompts are not affected by this option and are still echoed to the console. SYSTEM specifies that all system input is immediately taken from the disk file specified in the command line. GET takes system and program in)put from the file until the file is exhausted or until GET reads a GET console command from the file. ///2Examples A>GET FILE XINPUT A>MYPROG Tells the system to activate the GET utility. Since SYSTEM is not specified, the system reads the next input line from the console and executes MYPROG. If MYPROG program requires console input, it is taken from the file XINPUT. When MYPROG terminates, the system reverts back to the console for console input. A>GET FILE XIN2 [SYSTEM] Immediately directs the system to get subsequent console input from file XIN2 because it includes the SYSTEM option. The system reverts back to the console for console input when it reaches the end of file in XIN2. Or XIN2 may redirect the system back to the console if it contains a GET CONSOLE command. A>GET CONSOLE Tells the system to get console input from the console. This command may be used in a file (previously specified in a GET FILE command), which is already being read by the system for console input. It is used to re-direct the console input back to the console before the end-of-file is reached. ///1HELP Syntax: HELP {topic} {subtopic1 ... subtopic8} {[NOPAGE|LIST]} Explanation: HELP displays a list of topics and provides summarized information for CP/M 3 commands. HELP topic displays information about that topic. HELP topic subtopic displays information about that subtopic. One or two letters is enough to identify the topics. After HELP displays information for your topic, it displays the special prompt HELP> on your screen, followed by a list of subtopics. - Enter ? to display list of main topics. - Enter a period and subtopic name to access subtopics. - Enter a period to redisplay what you just read. - Press the RETURN key to return to the CP/M 3 system prompt. - [NOPAGE] option disables the 24 lines per page console display. - Press any key to exit a display and return to the HELP> prompt. Examples: A>HELP A>HELP DATE A>HELP DIR OPTIONS A>HELP>.OPTIONS HELP>SET HELP>SET PASSWORD HELP>.PASSWORD HELP>. HELP> ///1HEXCOM Syntax: HEXCOM filename Explanation: The HEXCOM Command generates a command file (filetype .COM) from a .HEX input file. It names the output file with the same filename as the input file but with filetype .COM. HEXCOM always looks for a file with filetype .HEX. Example: A>HEXCOM B:PROGRAM Generates a command file PROGRAM.COM from the input hex file PROGRAM.HEX. ///1INITDIR Syntax: INITDIR {d:} Explanation: The INITDIR Command initializes a disk directory to allow date and time stamping of files on that disk. INITDIR can also recover time/date directory space. Example: A>INITDIR C: INITDIR WILL ACTIVATE TIME-STAMPS FOR SPECIFIED DRIVE. Do you want to re-format the directory on C: (Y/N)?Y ///1LIB Syntax: LIB filespec{[I|M|P|D]} LIB filespec{[I|M|P]}=filespec{modifier} {,filespec{modifier} ... } Explanation: A library is a file that contains a collection of object modules. Use the LIB utility to create libraries, and to append, replace, select or delete modules from an existing library. Use LIB to obtain information about the contents of library files. LIB creates and maintains library files that contain object modules in Microsoft REL file format. These modules are produced by Digital Research's relocatable macro-assembler program, RMAC, or any other language translator that pruduces modules in Microsoft REL file format. You can use LINK-80 to link the object modules contained in a library to other object files. LINK-80 automatically selects from the library only those modules needed by the program being linked, and then forms an executable file with a filetype of COM. ///2Options I The INDEX option creates an indexed library file of type .IRL. LINK-80 searches faster on indexed libraries than on non-indexed libraries. M The MODULE option displays module names. P The PUBLICS option displays module names and the public variables for the new library file. D The DUMP option displays the contents of object modules in ASCII form. ///2Modifiers Use modifiers in the command line to instruct LIB to delete, replace, or select modules in a library file. Angle brackets enclose the modules to be deleted or replaced. P)arentheses enclose the modules to be selected. LIB Modifiers Delete Replace If module name and filename are the same this shorthand can be used: Select (modFIRST-modLAST,mod1,mod2,...,modN) ///2Examples A>LIB TEST4[P] Displays all modules and publics in TEST4.REL. A>LIB TEST5[P]=FILE1,FILE2 Creates TEST5.REL from FILE1.REL and FILE2.REL and displays all modules and publics in TEST5.REL. A>LIB TEST=TEST1(MOD1,MOD4),TEST2(C1-C4,C6) Creates a library file TEST.REL from modules in two source files. TEST1.REL contributes MOD1 and MOD4. LIB extracts modules C1, C4, and all the modules located between them, as well as module C6 from TEST2.REL. A>LIB FILE2=FILE3 Creates FILE2.REL from FILE3.REL, omitting MODA which is a module in FILE3.REL. A>LIB FILE6=FILE5 Creates FILE6.REL from FILE5.REL, FILEB.REL replaces MODA. A>LIB FILE6=FILE5 Module THISNAME is in FILE5.REL. When LIB creates FILE6.REL from FILE5.REL the file THISNAME.REL replaces the similarly named module THISNAME. A>LIB FILE1[I]=B:FILE2(PLOTS,FIND,SEARCH-DISPLAY) Creates FILE1.IRL on drive A from the selected modules PLOTS, FIND, and modules SEARCH through the module DISPLAY, in FILE2.REL on drive B. ///1LINK Syntax: LINK d:{filespec,{[options]}=}filespec{[options]}{,...} Explanation: LINK combines relocatable object modules such as those produced by RMAC and PL/I-80 into a .COM file ready for execution. Relocatable files can contain external references and publics. Relocatable files can reference modules in library files. LINK searches the library files and includes the referenced modules in the output file. See the CP/M 3 Programmer's Utilities Guide for a complete description of LINK- 80. ///2Options Use LINK option switches to control execution parameters. Link options follow the file specifications and are enclosed within square brackets. Multiple switches are separated by commas. LINK-80 Options A Additional memory; reduces buffer space and writes temporary data to disk B BIOS link in banked CP/M 3 system. 1. Aligns data segment on page boundary. 2. Puts length of code segment in header. 3. Defaults to .SPR filetype. Dhhhh Data origin; sets memory origin for common and data area Gn Go; set start address to label n Lhhhh Load; change default load address of module to hhhh. Default 0100H Mhhhh Memory size; Define free memory requirements for MP/M modules. NL No listing of symbol table at console NR No symbol table file OC Output .COM command file. Default OP Output .PRL page relocatable file for execution under MP/M in relocatable segment OR Output .RSP resident system process file for execution under MP/M OS Output .SPR system page relocatable file for execution under MP/M Phhhh Program origin; changes default program origin address to hhhh. Default is 0100H. Q Lists symbols with leading question mark S Search preceding file as a library $Cd Destination of console messages d can be X (console), Y (printer), or Z (zero output). Default is X. $Id Source of intermediate files; d is disk drive A-P. Default is current drive. $Ld Source of library files; d is disk drive A-P. Default is current drive. $Od Destination of of object file; d can be Z or disk drive A-P. Default is to same drive as first file in the LINK-80 command. $Sd Destination of symbol file; d can be Y or Z or disk drive A-P. Default is to same drive as first file in LINK-80 command. ///2Examples A>LINK b:MYFILE[NR] LINK-80 on drive A uses as input MYFILE.REL on drive B and p*roduces the executable machine code file MYFILE.COM on drive B. The [NR] option specifies no symbol table file. A>LINK m1,m2,m3 LINK-80 combines the separately compiled files m1, m2, and m3, resolves their external references, and produces the executable machine code file m1.COM. A>LINK m=m1,m2,m3 LINK-80 combines the separately compiled files m1, m2, and m3 and produces the executable machine code file m.COM. A>LINK MYFILE,FILE5[s] The [s] option tells LINK-80 to search FILE5 as a library. LINK-80 combines MYFILE.REL with the referenced subroutines contained in FILE5.REL on the default drive A and produces MYFILE.COM on drive A. ///1mac Syntax: MAC filename {$options} Explanation: MAC, the CP/M 3 macro assembler, reads assembly language statements from a file of type .ASM, assembles the statements, and produces three output files with the input filename and filetypes of .HEX, .PRN, and .SYM. Filename.HEX contains INTEL hexadecimal format object code. Filename.PRN contains an annotated source listing that you can print or examine at the console. Filename.SYM contains a sorted list of symbols defined in the program. ///2Examples A>MAC SAMPLE A>MAC SAMPLE $PB AA HB SX ///2options Use options to direct the input and output of MAC. Use a letter with the option to indicate the source and destination drives, and console, printer, or zero output. Valid drive names are A thru O. X, P and Z specify console, printer, and zero output, respectively. Assembly Options That Direct Input/Output A source drive for .ASM file (A-O) H destination drive for .HEX file (A-O, Z) L source drive for macrolibrary .LIB files called by the MACLIB statement. P destination drive for .PRN file (A-O, X, P, Z)  S destination drive for .SYM file Assembly Options That Modify Contents Of Output File +L lists input lines read from macrollibrary .LIB files -L suppresses listing (default) +M lists all macro lines as they are processed during assembly -M suppresses all macro lines as they are read during assembly *M lists only hex generated by macro expansions +Q lists all LOCAL symbols in the symbol list -Q suppresses all LOCAL symbols in the symbol list (default) +S appends symbol file to print file -S suppresses creation of symbol file +1 produces a pass 1 listing for macro debugging in .PRN file -1 suppress listing on pass 1 (default) ///1PATCH Syntax: PATCH filename{.typ} {n} Explanation: The PATCH command displays or installs patch number n to the CP/M 3 system or command files. The patch number n must be between 1 and 32 inclusive. Example: A>PATCH SHOW 2 Patches the SHOW.COM system file with patch number 2. ///1PIP (copy) Syntax: DESTINATION SOURCE PIP d:{Gn} | filespec{[Gn]} = filespec{[o]},... | d:{[o]} Explanation: The file copy program PIP copies files, combines files, and transfers files between disks, printers, consoles, or other devices attached to your computer. The first filespec is the destination. The second filespec is the source. Use two or more source filespecs separated by commas to combine two or more files into one file. [o] is any combination of the available options. The [Gn] option in the destination filespec tells PIP to copy your file to that user number. PIP with no command tail displays an * prompt and awaits your series of commands, entered and processed one line at a time. The source or destination can be any CP/M 3 logical device. ///2Examples COPY A FILE FROM ONE DISK TO ANOTHER A>PIP b:=a:draft.txt  A>PIP b:draft.txt = a: B3>PIP myfile.dat=A:[G9] A9>PIP B:[G3]=myfile.dat COPY A FILE AND RENAME IT A5>PIP newdraft.txt=oldraft.txt C8>PIP b:newdraft.txt=a:oldraft.txt COPY MULTIPLE FILES A>PIP b:=draft.* A>PIP b:=*.* B>PIP b:=c:.*.* C>PIP b:=*.txt[g5] C>PIP a:=*.com[wr] B>PIP a:[g3]=c:*.* COMBINE MULTIPLE FILES A>PIP b:new.dat=file1.dat,file2.dat COPY, RENAME AND PLACE IN USER 1 A>pip newdraft.txt[g1]=oldraft.txt COPY, RENAME AND GET FROM USER 1 A>PIP newdraft.txt=oldraft.txt[g1] COPY TO/FROM LOGICAL DEVICES A>PIP b:funfile.sue=con: A>PIP lst:=con: A>PIP lst:=b:draft.txt[t8] A>PIP prn:=b:draft.txt ///2options PIP OPTIONS A Archive. Copy only files that have been changed since the last copy. C Confirm. PIP prompts for confirmation before each file copy. Dn Delete any characters past co*lumn n. E Echo transfer to console. F Filter form-feeds from source data. Gn Get from or go to user n. H Test for valid Hex format. I Ignore :00 Hex data records and test for valid Hex format. K Kill display of filespecs on console. L Translate upper case to lower case. N Number output lines O Object file transfer, ^Z ignored. Pn Set page length to n. (default n=60) Qs^Z Quit copying from source at string s. R Read files that have been set to SYStem. Ss^Z Start copying from the source at the string s. Tn Expand tabs to n spaces. U Translate lower case to upper case. V Verify that data has been written correctly. W Write over Read Only files without console query. Z Zero the parity bit. All options except C,G,K,O,R,V and W force an ASCII file transfer, character by character, terminated by a ^Z. ///1PUT Syntax: PUT CONSOLE {OUTPUT TO} FILE filespec {option} | CONSOLE PUT PRINTER {OUTPUT TO} FILE filespec {option} | PRINTER PUT CONSOLE {OUTPUT TO} CONSOLE PUT PRINTER {OUTPUT TO} PRINTER Explanation: PUT puts console or printer output to a file for the next command entered at the console, until the program terminates. Then console output reverts to the console. Printer output is directed to a file until the program terminates. Then printer output is put back to the printer. PUT with the SYSTEM option directs all subsequent console/printer output to the specified file. This option terminates when you enter the PUT CONSOLE or PUT PRINTER command. ///2Options [ {ECHO | NO ECHO} {FILTER | NO FILTER} | {SYSTEM} ] ECHO specifies that output is echoed to the console. This is the default option when you direct console output to a file. NO ECHO specifies that file output is not echoed to the  console. NO ECHO is the default for the PUT PRINTER command. FILTER specifies filtering of control characters, which means that control characters are translated to printable characters. For example, an ESCape character is translated to ^[. NO FILTER means that PUT does not translate control characters. This is the default option. SYSTEM specifies that system output as well as program output is written to the file specified by filespec. Output is written to the file until a subsequent PUT CONSOLE command redirects console output back to the console. ///2Examples A>PUT CONSOLE OUTPUT TO FILE XOUT [ECHO] Directs console output to file XOUT with the output echoed to the console. A>PUT PRINTER OUTPUT TO FILE XOUT A>MYPROG Directs  the printer output of program MYPROG to file XOUT. The output is not echoed to the printer. A>PUT PRINTER OUTPUT TO FILE XOUT2 [ECHO,SYSTEM] Directs all printer output to file XOUT2 as well as to the printer (with ECHO option), and the PUT is in effect until you enter a PUT PRINTER OUTPUT TO PRINTER command. A>PUT CONSOLE OUTPUT TO CONSOLE Directs console output back to the console. A>PUT PRINTER OUTPUT TO PRINTER Directs printer output back to the printer. ///1RENAME Syntax: RENAME {new-filespec=old-filespec} Explanation: RENAME lets you change the name of a file in the directory of a disk. To change several filenames in one command use the * or ? wildcards in the file specifications. The RENAME command can be abbreviated REN. REN prompts you for input. ///2Examples A>RENAME NEWFILE.BAS=OLDFILE.BAS The file OLDFILE.BAS changes to NEWFILE.BAS on drive A. A>RENAME The system prompts for the filespecs: Enter New Name:X.PRN Enter Old Name:Y.PRN Y .PRN=X .PRN A> File X.PRN is renamed to Y.PRN on drive A. B>REN A:PRINTS.NEW = PRINCE.NEW The file PRINCE.NEW on drive A changes to PRINTS.NEW on drive A. A>RENAME S*.TEX=A*.TEX The above command renames all the files matching A*.TEX to files with filenames S*.TEX. A>REN B:NEWLIST=B:OLDLIST The file OLDLIST changes to NEWLIST on drive B. Since the second drive specifier, B: is implied by the first one, it is unnecessary in this example. The command line above has the same effect as the following: A>REN B:NEWLIST=OLDLIST or A>REN NEWLIST=B:OLDLIST ///1RMAC Syntax: RMAC filespec {$Rd | $Sd | $Pd} Explanation: RMAC, a relocatable macro assembler, assembles .ASM file+s of into .REL files that you can link to create .COM files. ///2options RMAC options specify the destination of the output files. Replace d with the destination drive letter for the output files. Option d=output option R- drive for REL file (A-O, Z) S- drive for SYM file (A-O, X, P, Z) P- drive for PRN file (A-O, X, P, Z) A-O specifies drive A-O. X means output to the console. P means output to the printer. Z means zero output. ///2Example A>RMAC TEST $PX SB RB Assembles the file TEST.ASM from drive A, sends the listing file (TEST.PRN) to the console, puts the symbol file (TEST.SYM) on drive B and puts the relocatable object file (TEST.REL) on drive B. ///1SAVE Syntax: SAVE Explanation: SAVE copies the contents of memory to a file. To use SAVE, first issue the SAVE command, then run your program which reads a file into memory. Your program exits to the SAVE utility which prompts you for a filespec to which it copies the contents of memory, and the beginning and ending address of the memory to be SAVEd. ///2Example A>SAVE Activates the SAVE utility. Now enter the name of the program which loads a file into memory. A>SID dump.com Next, execute the program. #g0 When the program exits, SAVE intercepts the return to the system and prompts the user for the filespec and the bounds of memory to be SAVEd. SAVE Ver 3.0 Enter file (type RETURN to exit):dump2.com If file DUMP2.COM exists already, the system asks: Delete dump2.com? Y Then the system asks for the bounds of memory to be saved: Beginning hex address: 100 Ending hex address: 400 The contents of memory from 100H (Hexadecimal) to 400H is copied to file DUMP2.COM.  ///1SET Syntax: SET [options] SET d: [options] SET filespec [options] Explanation: SET initiates password protection and time stamping of files. It also sets the file and drive attributes Read-Write, Read-Only, DIR and SYS. It lets you label a disk and password protect the label. To enable time stamping of files, you must first run INITDIR to format the disk directory. ///2Label Syntax: SET {d:} [NAME=labelname.typ] SET [PASSWORD=password] SET [PASSWORD= ///3Examples A>SET [NAME=DISK100] Labels the disk on the default drive as DISK100. A>SET [PASSWORD=SECRET] Assigns SECRET to the disk label. A>SET [PASSWORD= Nullifies the existing password. ///2Passwords SET [PROTECT=ON] SET [PROTECT=OFF] SET filespec [PASSWORD=password] SET filespec [PROTECT=READ] SET filespec [PROTECT=WRITE] SET filespec [PROTECT=DELETE] SET filespec [PROTECT=NONE] SET filespec [attribute-options] ///3Modes Password Protection Modes Mode Protection READ The password is required for reading, copying writing, deleting or renaming the file. WRITE The password is required for writing, deleting or renaming the file. You do not need a password to read the file. DELETE The password is only required for deleting or renaming the file. You do not need a password to read or modify the file. NONE No password exists for the file. If a password password exists, this modifier can be used to delete the password. ///2Attributes RO sets the file attribute to Read-Only. RW sets the file attribute to Read-Write. SYS sets the file attribute to SYS. DIR sets the file attribute to DIR. ARCHIVE=OFF means that the file has not been backed up (archived). ARCHIVE=ON means that the file has been backed up (archived). The Archive attribute can be turned on by SET or by PIP when copying a group of files with the PIP [A] option. SHOW and DIR display the Archive option. F1=ON|OFF turns on or off the user-definable file attribute F1. F2=ON|OFF turns on or off the user-definable file attribute F2. F3=ON|OFF turns on or off the user-definable file attribute F3. F4=ON|OFF turns on or off the user-definable file attribute F4. ///3Examples SET [PROTECT=ON] Turns on password protection for all the files on the disk. + You must turn on password protection before you can assign passwords to files. SET [PROTECT=OFF] Disables password protection for the files on your disk. A>SET MYFILE.TEX [PASSWORD=MYFIL] MYFIL is the password assigned to file MYFILE.TEX. B>SET *.TEX [PASSWORD=SECRET, PROTECT=WRITE] Assigns the password SECRET to all the TEX files on drive B. Each TEX file is given a WRITE protect mode to prevent unauthorized editing. A>SET MYFILE.TEX [RO SYS] Sets MYFILE.TEX to Read-Only and SYStem. ///2Default A>SET [DEFAULT=dd] Instructs the system to use dd as a password if you do not enter a password for a password-protected file. ///2Time-Stamps Syntax: SET [CREATE=ON] SET [ACCESS=ON] SET [UPDATE=ON] Explanation: The above SET commands allow you to keep a record of the time and date of file creation and update, or of the last access and update of your files. ///3Options [CREATE=ON] turns on CREATE time stamps on the disk in the default or specified drive. To record the creation time of a file, the CREATE option must be turned on before the file is created. [ACCESS=ON] turns on ACCESS time stamps on the disk in the default or specified drive. ACCESS and CREATE options are mutually exclusive; only one can be in effect at a time. If you turn on the ACCESS time stamp on a disk that previously had CREATE time stamp, the CREATE time stamp is automatically turned off. [UPDATE=ON] turns on UPDATE time stamps on the disk in the default or specified drive. UPDATE time stamps record the time the file was last modified. ///3Examples A>SET [ACCESS=ON]  A>SET [CREATE=ON,UPDATE=ON] ///2Drives Syntax: SET {d:} [RO] SET {d:} [RW] Example: A>SET B: [RO] Sets drive B to Read-Only. ///1SETDEF Syntax: SETDEF { d: {,d: {,d: {,d:}}}} {[ TEMPORARY = d: ] | [ ORDER = (typ {,typ}) ]} SETDEF [DISPLAY | NO DISPLAY] SETDEF [PAGE | NOPAGE] Explanation: SETDEF allows the user to display or define up to four drives for the program search order, the drive for temporary files, and the file type search order. The SETDEF definitions affect only the loading of programs and/or execution of SUBMIT (SUB) files. SETDEF turns on/off the system Display and Console Page modes. When on, the system displays the location and name of programs loaded or SUBmit files executed, and stops after displaying one full console screen of information. ///2Examples A>SETDEF  Displays current SETDEF parameters. A>SETDEF [TEMPORARY=C:] Sets disk drive C as the drive to be used for temporary files. A>SETDEF C:,* Tells the system to search for a program on drive C, then, if not found, search for it on the default drive. A>SETDEF [ORDER=(SUB,COM)] Instructs the system to search for a SUB file to execute. If no SUB file is found, search for a COM file. A>SETDEF [DISPLAY] Turns on the system display mode. Henceforth, the system displays the name and location of programs loaded or submit files executed. A>SETDEF [NO DISPLAY] Turns off the system Display mode. ///1SHOW Syntax: SHOW {d:}{[SPACE |LABEL |USERS |DIR |DRIVE]} Explanation: The SHOW command displays the following disk drive information: Access mode and the amount of free disk space Disk label Current user number and Number of files for each user number on the disk Number of free directory entries for the disk Drive characteristics ///2Examples A>SHOW A>SHOW [SPACE] Instructs the system to display access mode and amount of space left on logged-in drives. A>SHOW B: Show access mode for drive B and amount of space left on drive B. A>SHOW B:[LABEL] Displays label information for drive B. A>SHOW [USERS] Displays the current user number and all the users on drive A and the corresponding number of files assigned to them. A>SHOW C:[DIR] Displays the number of free directory entries on drive C. A>SHOW [DRIVE] Displays the drive characteristics of drive A. ///1SID Syntax: SID {pgm-filespec} {,sym-filespec} Explanation: The SID symbolic debugger allows you to monitor and test programs developed for the 8080 microprocessor. SID supports real-time breakpoints, fully mo,nitored execution, symbolic disassembly, assembly, and memory display and fill functions. SID can dynamically load SID utility programs to provide traceback and histogram facilities. ///2Commands Command Meaning As (Assemble) Enter assembly language statements s is the start address Cs{b{,d}} (Call) Call to memory location from SID s is the called address b is the value of the BC register pair d is the value of the DE register pair D{W}{s}{,f} (Display) Display memory in hex and ASCII W is a 16-bit word format s is the start address f is the finish address Epgm-filespec (Load) Load program and symbol table {,sym-filespec} for execution E*sym-filespec (Load) Load a symbol table file Fs,f,d (Fill) Fill memory with constant value s is the start address f is the finish address d is an eight-bit data item G{p}{,a{,b}} (Go) Begin Execution p is a start address a is a temporary breakpoint H (Hex) Displays all symbols with addresses in Hex H.a Displays hex, decimal, and ASCII values of a where a is a symbolic expression Ha,b Computes hex sum and difference of a and b where  a and b are symbolic expressions Icommand tail (Input) Input CCP command line L{s}{,f} (List) List 8080 mnemonic instructions s is the start address f is the finish address Ms,h,d (Move) Move Memory Block s is the start address h is the high address of the block d is the destination start address P{p{,c}} (Pass) Pass point set, reset, and display p is a permanent breakpoint address c is initial value of pass counter Rfilespec{,d} (Read) Read Code/Symbols d is an offset to each address S{W}s (Set) Set Memory Values s is address where value is sent W is 16 bit word T{n{,c}} (Trace) Trace Program Execution n is the number of program steps c is the utility entry address. T{W}{n{,c}} (Trace) Trace Without Call W instructs SID not to trace subroutines n is the number of program steps c is the utility entry address U{W}{n{,c}} (Untrace) Monitor Execution without Trace n is the number of program steps c is the utility entry address W instructs SID not to trace subroutines V (Value) Display the value of the next available location in memory  (NEXT), the next location after the largest file read in (MSZE), the current value of the Program counter (PC), and the address of the end of available memory (END) Wfilespec,s,f (Write) Write the contents of a contiguous block of memory to filespec. f is finish address X{f}{r} (Examine) Examine/alter CPU state. f is flag bit C,Z,M,E or I. r is register A,B,D,H,S or P. ///2Examples A>SID CP/M 3 loads SID from drive A into memory. SID displays the # prompt when it is ready to accept commands. A>B:SID SAMPLE.HEX CP/M 3 loads SID and the program file SAMPLE.HEX into memory from drive B. ///2Utilities SID u,tilities, HIST.UTL and TRACE.UTL are special programs that operate with SID to provide additional debugging facilities. The mechanisms for system initialization, data collection, and data display are described in the CP/M SID User's Guide. The HIST utility creates a histogram (bar graph) showing the relative frequency of execution of code within selected program segments of the test program. The HIST utility allows you to monitor those sections of code that execute most frequently. The TRACE utility obtains a backtrace of the instructions that led to a particular breakpoint address in a program under test. You can collect the addresses of up to 256 instructions between pass points in U or T modes. ///1SUBMIT Syntax: SUBMIT {filespec} {argument} ... {argument} Explanation: The SUBMIT command lets you execute a group (batch) of commands from a SUBmit file (a file with filetype of SUB). ///2Subfile The SUB file can contain the following types of lines: Any valid CP/M 3 command Any valid CP/M 3 command with SUBMIT parameters ($0-$9) Any data input line Any program input line with parameters ($0 to $9) The command line cannot exceed 135 characters. The following lines illustrate the variety of lines which may be entered in a SUB file: DIR DIR *.BAK MAC $1 $$$4 PIP LST:=$1.PRN[T$2 $3 $5] DIR *.ASM PIP SUBMIT A>SUBMIT SUBA A>SUBMIT AA ZZ SZ A>SUBMIT B:START DIR E: ///2PROFILE.SUB Everytime you power up or reset your computer, CP/M 3 looks for a special SUBmit file named PROFILE.SUB to execute. If it does not exist, CP/M 3 resumes normal operation. If the PROFILE.SUB file exists, the system executes the commands in the file. This file is convenient to use if you regularly execute a set of commands before you do your regular session on the computer. ///1TYPE Syntax: TYPE {filespec {[ PAGE | NOPAGE ]}} Explanation: The TYPE command displays the contents of an ASCII character file on your screen. [PAGE] Causes the console listing to be displayed in paged mode; i.e., stop automatically after listing n lines of text, where n normally defaults to 24 lines per page. [NOPAGE] Turns off Console Page Mode and continuously displays a typed file on the screen. ///2Examples A>TYPE MYPROG.PLI Displays the contents of the file MYPROG.PLI on your screen. A>TYPE B:THISFILE [PAGE] Displays the contents of the file THISFILE from drive B on your screen twenty four lines at a time. ///1USER Syntax: USER {number} Explanation: The USER command sets the current user number. The disk directory can be divided into distinct groups according to a "User Number." User numbers range from 0 through 15. ///2Examples A>USER Enter User#:5 5A> The current user number is now 5 on drive A. A>USER 3 3A> This command changes the current User Number to 3. ///1XREF Syntax: XREF {d:} filename {$P} Explanation: XREF provides a cross-reference summary of variable usage in a program. XREF requires the .PRN and .SYM files produced by MAC or RMAC for input to the program. The SYM and PRN files must have the same filename as the filename in the XREF command tail. XREF outputs a file of type .XRF. Examples: A>XREF b:MYPROG A>XREF b:MYPROG $P -ÀCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH251082Yl]!9"k1G \!m!w# š!v6H#6E#6X!e6C#6O#6M<<&:g.".g"?S:2n!`w #4o"c*e{ozg"hj:]@*c"\y!5C*^N{zb+"^*^*`*h"!j4&"h"y:b<5*kG!gwxS0  *cN,*cN{zҽ{,*c*e{ozg ~*c#"c> :[ >  X N*c>:> !:q#G*eDM*h ERROR: $DISK READ$LOAD ADDRESS LESS THAN 100$DISK WRITE$LOAD ADDRESS $ERROR ADDRESS $INVALID HEX DIGIT$CHECKSUM ERROR $FIRST ADDRESS $LAST ADDRESS $BYTES READ $RECORDS WRITTEN $CANNOT OPEN SOURCE FILE$DIRECTORY FULL$CANNOT CLOSE FILE$HEXCOM VERS: 3.00 $4!y~=W!x# ~#bxE {8~#o}oA'.`28!Ip+q*HT!J6J T ` T!p+q*T> >/Ҥ×!p+q*DM͛:̀ ̀:2:!!K:*&L Ǹ!4!K6 ͐uëYALPSID'TCELLOC$LAITINI!%cCOPYRIGHT (C) 1977 DIGITAL RESEARCH {{ { {zb{b{*9 {_zW}l&))o> \> \\ß*"!" ͟#͟Prںºx"x#"̀ں͇"1!6# y͟!h͟$h͟'h*̀`*̀`*1̀I ?! ^#Vr+sz`>>!@^#V#̀{ k͇#"/<͟h2**̀`i~#!~6͟*1Þ6͔h*1^#V#Þ͔{> \*/̀>*\ ERROR - FORM IS X,Y TYPE HISTOGRAM BOUNDS HISTOGRAM: ADDR RELATIVE FREQUENCY, LARGEST VALUE = .INITIAL = .COLLECT = .DISPLAY = .... !6 ` !6 ` !6 ` *&T` !6 ` !6 ` !60 ` *&T` !6* ` !6* ` !6* ` *& @AA I$DBD $I$BHA"DH!""@ Title 'Wdrives.Asm' ;------------------------------------------------------------; ; Definition Module for the Floppies and Winchesters in ; ; the system. ; ; ; ; Note: If You use Adaptec controller, You link ExtmemA.Rel ; ; and if Xebec, You link ExtmemX.Rel to BNKBIOS3.SPR ; ; This will done with the command: ; ; SUBMIT GENWBIOS A for Adaptec ; ; SUBMIT GENWBIOS X for Xebec ; ;------------------------------------------------------------; ; Latest update: 1985-11-15. PSW ; Biosrevision: F ; ; For the RMAC assembler. ;------------------------------------------------------------; ; Answer in field #1 and/or in field #2 !! ; ;------------------------------------------------------------; True Equ -1 False Equ Not True NetWork Equ False ;------------------------------------------------------------; ; Field #1 -- SuperJet. - ; ; ; SuperJet Equ False ; False indicates You; ; ; must goto field #2.; TwoWins Equ False ; False: 1 drive ; ; ; True: 2 drives. ; ; System configuration for SuperJet: ; ; A: Winchester 1st part appr. 28800 KBytes ; ; B: Winchester 2nd part appr. 29300 KBytes ; ; C: Floppy 5" 1200 KBytes. ; ; D: Floppy 5" 800 KBytes ; ; The tape streamer does not have a logical device address. ; ; If 2 winchesters: ; ; E: Winchester 1st part appr. 28800 KBytes ; ; F: Winchester 2nd part appr. 29300 KBytes ; ;------------------------------------------------------------; Page 66 If Not SuperJet ;------------------------------------------------------------; ; Field #2 -- Other configurations. ; ; Here You must answer 6 or 7 questions: ; ; 1: Do You want Verify after write on floppy ? ; ; ; Verify Equ True ; Verify after write.; ; ; ; 2: What kind of floppy system do You want ? (Only 1 true) ; ; ; M8 Equ False ; 8" 1200 KBytes ; M5 Equ True ; 5" 1200 KBytes ; Min96 Equ False ; 5" 800 KBytes ; ; ; ; 3: Do You have an external 8" floppy drive ? ; ; Not supported with M8. ; Jet8 Equ False ; True means YES ; ; ; ; 4: What kind of winchester controller ? ; ; ; Adaptec Equ True ; False = Xebec ; ; ; ; 5: How many winchester drives ? (One or two) ; ; ; TwoWins Equ False ; False = 1 drive ; ; ; ; 6: What kind of winchester do You want ? (Only 1 true) ; ; Entries BlockSize; Ro204 Equ False ; Rodime 204 1024 2K ; Ro204E Equ False ; Rodime 204 E 2048 4K ; Ro352 Equ False ; Rodime 352 512-1024 2K ; XT1065 Equ False ; Maxtor XT-1065 2048 4K ; XT1085 Equ False ; Maxtor XT-1085 2048 4K ; CDC66 Equ False ; CDC 9415-66 2048 4K ; CDC86 Equ False ; CDC 9415-86 2048 4K ; Nec5126 Equ True ; Nec 5126 1024 2K ; ; ; ; 7: If Rodime 352 You must answer how directory entries. ; ; ; E512 Equ True ; False = 1024 ent. ; ; ; ;------------------------------------------------------------; ;------------- No more questions below here -----------------; Endif Page If SuperJet Verify Equ True M5 Equ True M8 Equ False Min96 Equ False Ro204 Equ False Ro204E Equ False Ro352 Equ False XT1065 Equ False XT1085 Equ False CDC66 Equ True CDC86 Equ False Nec5126 Equ False Adaptec Equ True E512 Equ False Jet8 Equ False Endif ;----------------------------------------------------------------; ; The byte called 'ReStep' is interpreted as follows: ; ; ; ; 1xxxxxxx ; No retry ; ; 0xxxxxxx ; Retry 4 times ; ; x1xxxxxx ; No retry a read of sector that contains; ; ; a data error before error correction. ; ; x0xxxxxx ; Reread before error correction ; ; xxx1xxxx ; Disk has servo information. ; ; xxx0xxxx ; No servo information. ; ; xxxx0000 ; 3 msec step rate ; ; xxxx0001 ; reserved (for servo) ; ; xxxx0010 ; -"- ; ; xxxx0011 ; -"- ; ; xxxx0100 ; 200 usec buffered step ; ; xxxx0101 ; 70 usec buffered step ; ; xxxx0110 ; 30 usec buffered step ; ; xxxx0111 ; 15 usec buffered step ; ;----------------------------------------------------------------; If Adaptec ; Adaptec: If Ro204 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If Ro204E ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If Ro352 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 36 ; # of Kbytes to reduce from second winchester unit. Endif If XT1065 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 64 ; # of Kbytes to reduce from second winchester unit. Endif If XT1085 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If CDC66 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 84 ; # of Kbytes to reduce from second winchester unit. Endif If CDC86 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 84 ; # of Kbytes to reduce from second winchester unit. Endif If Nec5126 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 36 ; # of Kbytes to reduce from second winchester unit. Endif Else ; Xebec If Ro204 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif .If Ro204E ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif If Ro352 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 34 ; # of Kbytes to reduce from second winchester unit. Endif If XT1065 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 60 ; # of Kbytes to reduce from second winchester unit. Endif If XT1085 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif If CDC66 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 76 ; # of Kbytes to reduce from second winchester unit. Endif If CDC86 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 76 ; # of Kbytes to reduce from second winchester unit. Endif If Nec5126 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 34 ; # of Kbytes to reduce from second winchester unit. Endif Endif Rate0 Equ 00000000b ; 3ms/6ms Rate1 Equ 00000001b ; 6ms/12ms Rate2 Equ 00000010b ; 10ms/20ms Rate3 Equ 00000011b ; 15ms/30ms DoublS Equ -1 ; Double sided SinglS Equ 0 ; Single sided Unit0 Equ 00000000b ; Physical Unit select 0 Unit1 Equ 00000001b ; Physical Unit select 1 Unit2 Equ 00000010b ; Physical Unit select 2 Unit3 Equ 00000011b ; Physical Unit select 3 Inch5 Equ 00001000b ; 5"-Floppy Inch8 Equ 11010100b ; 8"-Floppy DoublD Equ 00000000b ; Double density SinglD Equ 00100000b ; Single density If Adaptec ; Common area Comm Equ 0B8h ; 64K - 2*9K = 46K = B800h Else Comm Equ 0BCh ; 64K - 2*8.5K = 47K = BC00h Endif If Adaptec Contr1 Equ 00000001B ; Controller unit 1 Contr2 Equ 00000010B ; Controller unit 2 Contr3 Equ 00000100B ; Controller unit 3 WUnit1 Equ 00000000B OR Contr1 ; Winchester phys. unit 0 on Contr1 WUnit2 Equ 00100000B OR Contr1 ; Winchester phys. unit 1 on Contr1 WUnit3 Equ 00000000B OR Contr2 ; Winchester phys. unit 0 on Contr2 WUnit4 Equ 00100000B OR Contr2 ; Winchester phys. unit 1 on Contr2 WUnit5 Equ 00000000B OR Contr3 ; Winchester phys. unit 0 on Contr3 WUnit6 Equ 00100000B OR Contr3 ; Winchester phys. unit 1 on Contr3 Leav Equ 2 ; Interleave factor LSecPerTrk Equ 72 ; No of logical sectors/track Else WUnit1 Equ 00000000B ; Winchester phys. unit 0 on Contr1 WUnit2 Equ 00100000B ; Winchester phys. unit 1 on Contr1 Leav Equ 7 ; Interleave factor LSecPerTrk Equ 68 ; No of logical sectors/track Endif If E512 Ent Equ 512 AL1 Equ 0 Else Ent Equ 1024 AL1 Equ 0FFh Endif If M8 Sign Equ '8' Else Sign Equ '5' Endif Extrn FdRead, FdWrit, FdLgin, FdInit Extrn WRead, WWrit, WInit, WInitd, WLgin Public @DTbl, ?Titel, @Commo Cseg @DTbl: If NetWork Dw WinA,WinB,FlA ; A:, B:, C: Else Dw FlA,WinA,WinB ; This order must not be changed. ; Check boot-routine in ; BIOSKRNL.Z80 Endif If Min96 Dw 0 ; D: not installed Else Dw FlD Endif If TwoWins Dw WinE,WinF ; E:, F: Sign0 Equ '2' Else Dw 0,0 Sign0 Equ'1' Endif Dw 0,0 ; G:, H: not installed If Jet8 Dw FlI,FlJ ; I:, J: Else Dw 0,0 Endif Dw 0,0 ; K:, L: not installed Dw 0,0,0,0 ; M:, N:, O:, P: not installed @Commo: Db Comm ; Page Dseg ; Define WINCHESTER LOGICAL UNIT A: (Winchester boot else B:) Dw WWrit ;; Dw WRead ;; Dw WLgin ;; Dw WInit ;; Db WUnit1 ;; Physical unit for controller Db 0 ;; WINA: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN0 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb Dw 0FFFFh ;; DtaBcb Not used Dw 0FFFEh ;; Hash Db 0 ;; Hash bank ; Define WINCHESTER LOGICAL UNIT B: (Winchster boot else C:) Dw WWrit ;; Dw WRead ;; Dw WLgin ;; Dw WInitd ;; Db WUnit1 ;; Physical unit for controller Db 0 ;; WINB: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN1 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb Dw 0FFFFh ;; DtaBcb Not used Dw 0FFFEh ;; Hash Db 0 ;; Hash bank If TwoWins ; Define WINCHESTER LOGICAL UNIT E: Dw WWrit ;; Dw WRead ;; Dw WLgin ;; Dw WInitd ;; Db WUnit2 ;; Physical unit for controller Db 0 ;; WINE: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN0 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb Dw 0FFFFh ;; DtaBcb Not used Dw 0FFFEh ;; Hash Db 0 ;; Hash bank ; Define WINCHESTER LOGICAL UNIT F: Dw WWrit ;; Dw WRead ;; Dw WLgin ;; Dw WInitd ;; Db WUnit2 ;; Physical unit for controller Db 0 ;; WINF: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN1 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb Dw 0FFFFh ;; DtaBcb Not used Dw 0F.FFEh ;; Hash Db 0 ;; Hash bank Endif If M8 Or Jet8 ; Define 8" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:) / J: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+DoublD ;; $FdXsl Db 0 ;; If M8 FlA: Dw 0 ;; No trans table Else FlJ: Dw 0 ;; No trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If M5 ; Define 5.25" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:) Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit0+DoublD+11000000b ;; $FdXsl 2 MHz 8" Mode Db 0 ;; FlA: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F5Max ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If Min96 Or SuperJet Or M5 ; Define 5.25" 2x80x5x1024, 128 entries. Unit A: (Floppy boot else C:) ; Unit D: (SuperJet) Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch5+Unit0+DoublD ;; $FdXsl Db 0 ;; If Min96 FlA: Dw 0 ;; No trans table Else FlD: Dw 0 Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F596D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Endif If M8 Or Jet8 ; Define 8" 1x77x26x128, 64 entries (IBM). Unit D:/ I: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+SinglD ;; Db 0 ;; If M8 FlD: Dw Trans ;; Trans table Else FlI: Dw Trans ;; Trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8S ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Cseg Trans: Db 1,7,13,19,25,5,11,17,23,3,9,15,21 ; Db 2,8,14,20,26,6,12,18,24,4,10,16,22 ; Endif Cseg If M8 Or Jet8 ; DPB for 8" 2x77x8x1024, 256 entries. F8D: Dw 64 ; Number of logical sect/track Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 607 ; Max blocknumber Dw 256-1 ; 256 Directory entries Db 0F0h,0 ; Alloc vector to directory Dw 256/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch8+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies ; DPB for 8" 1x77x26x128, 64 entries. (IBM) F8S: Dw 26 ; No. of logical sectors/track. Db 3,7 ; Blockshift and mask Db 0 ; Extent mask Dw 242 ; Max blocknumber Dw 64-1 ; 64 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 64/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 1 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db 0 ; Single sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch8+SinglD ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If M5 ; DPB for 5.25" 2x77x8x1024, 256 entries. F5Max: Dw 64 ; No. of logical sectors/track. Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 607 ; Max blocknumber Dw 256-1 ; 256 Directory entries Db 0F0h,0 ; Alloc vector to directory Dw 256/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch5+DoublD+11000000b ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If Min96 Or SuperJet Or M5 ; DPB for 5.25" 2x80x5x1024, 128 entries. F596D: Dw 40 ; No. of logical sectors/track. Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 394 ; Max blocknumber Dw 128-1 ; 128 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 128/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write Db Rate0 ; Step rate Db Inch5+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies / Endif If Ro204 ; Winchester: Rodime 204 SIGN1 Equ '2' If Adaptec SIGN2 Equ '3' Else Sign2 Equ '2' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 5714 ; MAX BLOCKNUMMER Else Dw 5396 Endif Dw 1024-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-65 ; - " - Lbyte Db 255-8 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-132 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 5799-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 5477-(Reduce/2) Endif Dw 1024-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1271 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-65 ; - " - Lbyte Db 255-8 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-132 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If Nec5126 ; Winchester: Nec 5126 SIGN1 Equ '2' SIGN2 Equ '0' WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 4949 ; MAX BLOCKNUMMER Else Dw 4675 ; Endif Dw 1024-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte If Adaptec Db 255-43 ; - " - Lbyte Else Db 255-76 Endif Db 255-4 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 5035-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 5315-(Reduce/2) Endif Dw 1024-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte If Adaptec Db 255-43 ; - " - Lbyte Else Db 255-76 Endif Db 255-4 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If Ro204E ; Winchester: Rodime 204 E SIGN1 Equ '4' If Adaptec SIGN2 Equ '6' Else Sign2 Equ '3' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 5624 ; MAX BLOCKNUMMER Else Dw 5311 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte Db 255-128 ; - " - Lbyte Db 255-8 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 5873-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 5547-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 2501 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db/ 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte Db 255-128 ; - " - Lbyte Db 255-8 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If Ro352 ; Winchester Rodim 352 SIGN1 Equ '1' If Adaptec SIGN2 Equ '1' Else Sign2 Equ '0' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 2699 ; MAX BLOCKNUMMER Else Dw 2549 Endif Dw ENT-1 ; DIR. ENTRIES Db 0FFH,AL1 ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-50 ; - " - Lbyte Db 255-4 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 2784-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 2629-(Reduce/2) Endif Dw ENT-1 ; DIR. ENTRIES Db 0FFH,AL1 ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 601 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-50 ; - " - Lbyte Db 255-4 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If XT1065 ; Winchester Maxtor XT-1065 SIGN1 Equ '5' If Adaptec SIGN2 Equ '8' Else Sign2 Equ '5' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7199 ; MAX BLOCKNUMMER Else Dw 6799 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-150 ;  - " - Lbyte Db 255-7 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7239-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 6837-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 3201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-150 ; - " - Lbyte Db 255-7 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-11 ; ECC Endif If XT1085 ; Winchester Maxtor XT-1085 If Adaptec SIGN1 Equ '7' SIGN2 Equ '3' Else Sign1 Equ '6' Sign2 Equ '9' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 8999 ; MAX BLOCKNUMMER Else Dw 8499 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-4 ; No of cylinders Hbyte Db 255-0 ; - " - Lbyte Db 255-8 ; No of heads. Db 255-4 ; Red. write cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-4 ; Write precomp. cyl Hbyte Db 255-2 ; -0 " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 9410-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 8887-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 4001 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-4 ; No of cylinders Hbyte Db 255-0 ; - " - Lbyte Db 255-8 ; No. of heads. Db 255-4 ; Red. write cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-4 ; Write precomp. cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-11 ; ECC Endif If CDC66 ; Winchester CDC 9415-66 SIGN1 Equ '5' If Adaptec SIGN2 Equ '8' Else Sign2 Equ '5' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7199 ; MAX BLOCKNUMMER Else Dw 6799 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-7 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Obs Db 255-159 ; - " - Lbyte Obs Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7349-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 6941-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 3201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-7 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-11 ; ECC Endif If CDC86 ; Winchester CDC 9415-86 SIGN1 Equ '7' If Adaptec SIGN2 Equ '5' Else Sign2 Equ '1' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 9224 ; MAX BLOCKNUMMER Else Dw 8711 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-9 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 9482-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 8955-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 4101 ; OFFSET TRACK  Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-9 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-11 ; ECC Endif Dseg ?Titel: Db '80. ',Sign,'"-floppy ' If M8 Else If M5 Db '1.2 MByte ' Else Db '800 KByte ' Endif Endif Db Sign0,'x',Sign1,Sign2,' MBytes winchester ' If Adaptec Db 'A' Else Db 'X' Endif Db '.',13,10,0 End 0Ã"zw"|z !aF6c#6FCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]A͑"w*w}1ҫ!wE><0;!w!w6!w6!w"'x!%xy2w:w!)x"w*w~2w*w~og |2w:w !+x!/x!F:w_>͉:G!w>A;2wRf%!DB$![D>6;!!D;!!w>;!!-E> ;!@%*}!w;@!7Ewx͛:!8Ewx͛:"w*w:wog<,;!3x!rx*7C~og#))+"w*w#"w!HG"wbj"w!txDͺ(xx~# RE%!E>;%!F>;%@Ra%>B'!F>;%@*xx~2|x!F"w*w+:|xog!Gx͛:*w+:|xog*wx͛:R%!(DB$*w+:|xog>;!@!|x4nR%>B'@÷}x~# R%>B'!G> ;%@@%*=*w+*}x~og;@*w+*}x~og>;!9E>;!SE>;ͥ*w+*}x~og;*w+*}x~og#G>GA;*w+*}x~ogF>k}*xwÑ ̀*zw"w*w+"w*w+"w:w*w"w:w2w*w*w*w>og^<"w*7C^#V*w<*w<"w*w>og;#"w*w*w*w>og^<"w*7C^#V*w<!xE><0;!x*w>og;#"w*w*w*w>og^<"w*w*w^+++*w>og^}2w!Hg"w*w"w!HW"w*w*w<*!xͨ*w*w<"w*w+"w*w+*7C^#V<|z*w"w*w"xw!xD:w2w!x͂ :ww!xD!x͂ aÀ!xͨ!|w# À}!"w*7C^#V*w<|!xD*w"x2x:w2x:xog:xogw!F6*w:xog)))))~!Fe!HG:xog)))))6*w#"w!x4!xͨÚ!w6!"w"w"zw"|w!w6*w`~!F­!w6*7C^#V*w<2x:w2x:xog:xogog;#"w ^#V"x*vw*zw< *zw#"zw:w*~w*zw`;w*w#*x~og)))))*~w*zw`;> GA;*w *x~og)))))~*~w*zw`;w*w*x~og)))))*~w*zw`;>GA; *|w#"|w "x*x | !x/F><,;!x!8yC"~w*x)>og;"vw :w R9 %>B'!E>;%@!<,;!:ySx !w6!w6!{yD><,0;!yySu !w6{ ͔( ^#V"y*y^#V"y:y *w*y)))))~2w*w*y)))))*w:wog)))))> GA;:w!F :w *w:wog)))))6 :w *w#:wog)))))og^|n !w55r !w5*y+"y*w+"w:w *w | *w#*w^|± *w#"y!yͨ!yͨ*w*w<"w:w=2w:w !w4Ó ^#V"y>2y:zw2y:yog:yog< *~w:yog`;~c *~w:yog`;~*w*y~og))))) >2y:yog | *w*y~og))))):yog*~w:yog`;:yogx͛:ʳ !y4W *~w:yog`;6c*zw+"zw:y!y4 >I*xw"w!yL! *w#"w*w"w:yog#"w*xw*w< :y<2y:w2y:yog:yog*w+"w*y4nS^#V"y*7C~og*w *y~og)))))~og<*y"y!y 2y:y:wog#>og^"w*w<:wog"w*~w:yog`;*w*w)))))*w `;>GA;*~w:yog`;~*w+*w)))))*w `;w!w6P^#V"yR;%!-DB$!E>;!*y;!!E>;!@RL%>B'@(^#V"yR%>B'*y;%!-E> ;%@%*!w;@!7Ewx͛:!8Ewx͛:>m2y:w2y:yog:yogog^|*w:1yog)))))6+:F*w:yog)))))w>2y:yog |e*w:yog))))):yog6!y40!y4^#V"y!F6*w*y~og)))))"y!z"y>2z:zog |*y+:zog~g.*w *y~og)))))~g.`|!z:zogw!z4á*yGx͛:R-%>B'!G> ;%@RI%>B'!2G>;%@c%*`! z;@! z>;!9E>;!SE>;ͥ! z;>2z>2z:zog |! z:z_>͉:*y+:zog>͛:!zF><0;!z!z5!z4Ò!"w"w"w2Rz2Vz2Wz"w*w*w"Szgo"w!HW"w!Hg"w*Sz*w<!XzD2Uz:w2\z:\zog:Uzog*w#"w:Vzog*w<|!mz͜:Wzog*w<|!qz͜!*w+"w:Rz!uz!yzÙ}z~# %*w*z~og)))))*}z^#V*z~og)))))> GA;*w#"w*z4*z~og*w<|˜*z~og#>og^}*zwz~# ¡*z"z!zͨ*w*w"w*z6*w#"w%z~# *z~2z:w2z:zog:zog<\*z^#V:zog)))))6>2z:zog |U*z^#V:zog))))):zog6!z4!z4*w+"w*z~og+"w*z"z*z"z!z͜2z:w2z:zog:zog<*z^#V:zog)))))6>2z:zog |*z^#V:zog))))):zog6!z4ý!z4Ë*w*w<$*z"z!zͨ*w*w"wA!z͵"Hw͖!z͛"twåz~# I*z^#V*w;͍6!z>͓7!z͚"w!z͌!zp"w!z͘*z"z!zͤʤ!G͊= z~# ­*z^#V*w;͍6!z>͓7!z͚"w!z͌!zp"w!z͘*z"z!z!zͩ ![͊=m^#V"z!z*zr::z52z9!z5!z͛"tw!z͵"Hw*Hw|f!zF><0;!z*Hw^#V"Jw*Hw ^#V"7C*7C^#V*7C~og#;͍6!Lw>͓7*7C###"{!{A#͍6!Pw>͓7!Tw"z*7C ~gj"z*7C~!z W#:>2z:zog |l*z++:zog)w#w*z!zF:|e*7C^#V |H:z=*z+:zogwe:zog+*z++:zog)s#r!z4×^#V"{*{>l7!Lw>l785"{!{^#V"{*{>l7>5!Lw>l78>55*7C ^#V^#V"{*{>l7>5!Pw>l78>55>^#V" {*7C^#V* {^#V<&!S͊=* {^#V͍6!Pw>l779`^#V""{!${"&{!"${*"{~*&{w*${ruq!U͊=Û͇!({;!GG({x͛:ʙ>ɯB^#V^͞#V ͪͪ"  Later CP/M or MP/M Version Required$*}**}{ozg|g}o!\!l!*:3>:͞!L*3>͞K* !*ͤ͞ ͤ  >  ͤͤͤͤͤͤͤͤͤ͞ͲͲͲͤͲͲ Ͳ͞ Ͳͤ!Ͳͤ"Ͳͤ#Ͳͤ$ͻͤ%ͻͤ(ͤ1^#V#^#V́"> ́"> > ́">́{2> ́"́">́"> 2!2`iPY*}~##~#fo##^#V#{_z/!T]W{_z<KB ^#V^#V)F<*}!9{ozg| #~wþ))o |O#"9C[4BZ!9SJ~#$:> $J&9}x2LCy j2MC"){AE$:RC+-/x2LCy2MC"){Aͯ:LC!MCP& G7!9~#$&*){7<$2;C2PC2SC<2KC!9 V+iv-v>2PC#ҏ… ʉ ,v.¦#Ҧ,×eʰE+-#2QC$!LC5¡:MC!OC<_!;C>w w>+!NC~5>. G:QCx0:NC> !PC~ 5!NC4!KC5-2QCx!KC^4{# # !;C~0>0"+{*9C~2/{:PCA Ϳ"A <:/{20{>Vͬ"!0{S 5~/o :SC‰ >9ͬ"ʉ >*ͬ"w  y *:0{!9q#=€ Ï">21{<22{23{ 2.{:2{_:/{"*9C~2-{:-{9 :1{ :1{21{͟" :3{=O:1{##:3{O:.{#͖"Õ Z *A!O:1{!y21{:1{)!:.{0)!:3{O:-{*#!> #;!:1{21{:3{O:.{#͖"Õ :-{͟"!:-{"†!:-{"o!:3{O:-{##͖"Û :-{21{:3{O> #͖"Û :1{!:.{0¢!:3{O> #!:3{=O:-{##:3{O:.{#:1{21{!:3{O:.{#͖"Õ :-{V":1{":1{21{͟"":3{=O:1{##:1{ "<21{͚"Û :3{O:-{"H":1{3":-{B="?":1{*?"> #͖"Û :3{O:-{CV"D:PCi"> # #Æ":-{C}"# >R#Æ"# >B#͖"͖"Û :0{*+{!3{4!2{4S+-$G:/{Ox*9C## ¶"<>Sͬ">+ͬ">-ͬ">Cͬ">Dͬ":/,.B!2{N*9C# Ⱦ"G:2{_:/{O x*9C# Ⱦ#!i#9w$G:PC8#x+-L#SF#x+L#-SI#>+>-> F$ h#x=b#G#O# #:kCx#ډ#!ZCxO#ډ#$O#'O# £#O#> $Õ# µ#x¯#>$O# ##O#x#>O#='#$x!XC#$#:iC#$:XC> $#>29{!7{K':iC+$!XC+$> 3$> 3$3$26{!4{'!:{Ú=ê$$^$^#Vʃ$a$ͪ$F$#F|$#N|$#^#r+s#^#V++r+s~F$5F$$5^$q#pF$O$4~ $_$s#r#s#r#q!$Ú=$$C$$ Format Overflow*C-&C![{1.%O:Cy+%!9G'%~#'%%y.%O:C=%Æ%͹%F%{N%*iC|w%j& *iC*XC<#<> %> %͹%> %{=>'%!9ʨ%=~#'¡%{>'%%Ì%{=>'%{>b%*XC++|2{!{'ɯ%>%>2|" |" |`i" |!9"|!{%[| ~# %*[|~n&*[|~C&!U|>;G3!!!C(!C"i|!g|͋*k&!U|>;G3!R.!!C(!C"m|!k|͋*À&*]|"o|!o|͋*!q|(*a|^#V!aCs#r*c|^#V!cCs#r*_|^#V:|*qC:|G&!u|('*_|^#V}*qC}G&!w|(':C '*_|^#V}*qC}G '!y|(':C''*_|^#V}''!{|('^#V"}|!C"|*}|"|!|͚=2|!|K'^#V"|:CZ':C'*|'*|5!|6:| ʀ'ͳ'r'a'ò'!|'*|'*|5!`C6!|':`Cʯ'*|6Ì'g,2|:|'!C"|!"|!|͚=!XC6#6!|6 :C'!|'^#V"|!TC"|*|"|!|K1%(!C"|!"|!|͚="((:C(*|~ ?(*XC#"XC(*|~ S(!XC6#6(:C(*|~ u(*\C#"\C!ZC6#6(*|~ (*ZC#"ZC!ZC#(!ZC6#6*ZC*kC#<|(!C"|!"|!|͚=('!`C6"|!9"|!|(! 9^|~# (*|^#V|)*|*| r:*| nb5)*| !|>=;O)!|>;*|:!|;*|~#{)*|^#V)))|{)*|6P#6*|~#µ)*|^#V))|)*|6#6õ)*|6<#6*|6#6*|6#6*|6#6*| 6*|^#V}4}2|*|^#V} *!|44*|^#V}"*>2|*|^#V}M**|~#M**|6#6*|"|*|"|*|"|!|(0*|^#V|Š**|"|!"|!|͚=^#V^#VOA:Cڨ*!*͚=2CO!C·*6ü* +~#w!C s#r!C4A**C** I/O Stack Overflow!9"|!|*+!9$>'+%~T]O ++~+>x^#V"|*|6͌+;,T+!C"}!" }!}͚=M,]+^,2}:}+,ͩ+:|> b€+,Æ+ͩ++>,;,+V,+D,+Ì+V,+:}+^,+,^,++D,+M,+,,é+!`C6M,+V,+D, ,:|!`Cw,+g,2|*|~!,:|*|#*|~ogw*|4:|:| :|,:| ?:|':`C‡,!TC"}! }81,! }6Ò,:`C2 }!`C6: } ڡ,*XC#"XC: } ±,!XC6#6: }"3" 3*3^#V#"3^#VͿ,,"$3,"(3|,|~Ϳ,,ya-A =.:;<>[]y *"3, -(-,$-,1J- o&))))\xH  g-#w g--"-*(3#ʖ-AҖ-G-,:ʛ- 6à-p4-+4--#,-#*½-6?-w-¬-,---#6 -..- 4-.,.#*-6?.w--,.-.#6 .%#6.*(3##^ ~?1.# *.xCON CON RDR PUN LST M!L. ~"-$.-,1ҕ.\|.l.$.!~ .-!9.,°. ʾ.-#Ý.x=GÚ.->ɯ*(3+.^#V.#{#z.6#6. r+s!}F#~*/!}6P  eA eA!}^r+s6 #6 !}4^N*(3|Z/}=G/.V/R.R/O>~f/f/>ͨ/N*(3|’/YR.=/y‹/eAÎ/>~ʞ/=ʞ/>ͨ/q2-3*(3/"*3./{..**3*(3#:-3O/.#s#r/../.è/.r+s{0!'34**3+>|0+}o͵,Ϳ,~2&3Ϳ,""3,:&3.1[.a0G:&3.1*$3p[04#63,:&3|00*3++"3Å0}+ʉ00}|23"3,0"31F<|.1##"(36*$3s#rv-š2{ ʚ2*(3:&3w060*3"3<1:&3š20<ʚ2!"3*(3(3w# 1*(3~#3*(3 B>3*$3w#w3͵,,34/Ϳ,q3͵,,3Ϳ,Nm/3*(3~" 4#4#4͵,,3~Œ11K43.>13͵,,3~.>13*(3~ʹ1>31P43*(3!*~!/2,3*(3|1(^#V,,{z1z]22'3z(2:,324/q#2Nm/#2*(3|]2*~]2=!'3Z2:,3ͨ/W2S2w:2^1>͵,,3|}3~> 3<3͵,,3|”2*$3w=3*(3$B*$3^#V6+6++<3͵,,3>3"N#F#~Ϳ,q#p#w>3͵,,3>3*~,!2=2>!*(3" s#r#w=3* 3 }!m}6 4>2l}*i}!4#4#4~#N#F#y#x#:l}*i}!!:k}ʈ3]3G3:m}~G~#~O?3#~3! p! y! q<33.3~3#!!3! 6?<04= _!x$4*4FN4wxG>O>G!$q#p#6R4"f}"i}2h}x2k}.32l}>3!h}~54m3ʘ4=4:k}4*i}<˜4G34*f}:k}O*i}:m}´4y O4:k}G3*f}w# 4N3:l}4*i}!]343*f}"f}g4:l}/g.>Gx|g}o5@5!9VzwzO#5<599! 9/GO~9O9~q+d5!96#=w5O!9Fx7yҮ5! 9~WwzO+›55_ /!9~#=557"n}>6*n}"p}56*p}"p}56*p}G!9!xb6 ]6+/6$%?'w#6-!9~R7&7~#R77! 9~.87+60D70D76 #,7+r>o&9y>o&90w+i76.7w#Ì7 O~#¢7Gxڵ77 9> 79#7!9!97>?'w#7!9͛8! 9͛89! y@88!9o>g~18Gx8f848!9!w# L898!9!9!'#s8!9^{w{W#‡8~W8~+¶8ê87>?'w# þ88!9~#88!99#8>2/?'w#•9'w#¦97>?'w##´9^{w{W#9!9Ú=9999!9MD^#V# + w9ȇ :):Wf.0:r~#fo0:s#r!>O @:)8:|W}_ W:|}o|gG:yx/Wy/_{zW{_e:yw# r:~#É:~#W #ÿ:F#"r}x;:*r}!9G_>WObk++:~+:y~#//); ;=;);ɯo>g{ozg!<Ú=<<=!C{#z*aC*cC@xyx >c>_!?^#Vͺ>]>>(_>y͖>>)_>|@>R>'?|L>R>ͺ>>B>,_>]>> _eA eA eA0:_>_>m>m>]>|{>}{> ڦ>dԨ> ͨ>ڳ>ê>xm>N #~_>ü>!?ͺ>*}!9{_z>{> ?>]>>#_>*}>=^#V#͇>??>: "?>?_>!?ͺ>ͺ>>=_>^#V|W?}N?.))@ú>#F>A?> #r?~ >.?~ ?=c?^#V# File: Traceback:???????@ ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLSTBADG!C~N@3@B Condition Stack Overflow$4Ox!t} w#s#r#s#r!9!C s#r!CN!t} +++++‡@#{ @#zʥ@++~Ç@++!C5!~# ´@ð@!CN!t} +++++@#~#@+{@#z@++~@#^#V=!C~OA5:C_!C^#V"CTC.~# !A*qC)))))C )| 6A*TC|}*D"XC:C*CTCw# \A*D{ vA zA!#"DìACopyright (c) 1980 Digital Research, v1.3 !"}"}"}2C2C*} A"}q#p##}o"}*}o|ABB+w+w+r+s4w#w#s#r<2}++*}s#r"}*}#"}*}DM!}x~¾B#~+¾B+F+Nq#p*}+"}ʹBҼB=oB!+~O~#~G!/x—ByʴB >O6# ŽB ~B=ɯ ~#fo++-B!}~#B*}$BBCBC  Insufficient Memory$ Invalid I/O List End of Execution$(CdSYSINSYSPRINT    30INITDIR WILL ACTIVATE TIME STAMPS FOR SPECIFIED DRIVE.1Do you want to re-format the directory on drive: Do you want the existing time stamps cleared0Do you want to recover time/date directory space (Y/N)? YyABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzEnd of PASS 1. ERROR: INITDIR TERMINATED. Requires CP/M 3.0 or higher. Directory already re-formatted.Not enough room in directory. Wrong password.No time stamps present. Not enough available memory. Disk is READ ONLY. Cannot find last XFCB. 3Cannot re-format the directory with RSXs in memory. Unrecognized drive.Cannot select drive.! ABCDEFGHIJKLMNOPDRIVE: Enter Drive: :Directory is password protected.Password, please. >233w'xFwwww5xwwwxwwwwwwwwGwwwxxwxxwwxx BANK1 TRANSFER DMBK00 EQU 00001000B ; BANK0 --> BANK0 TRANSFER DMBK10 EQU 00010000B ; BANK1 --> BANK0 TRANSFER DMBK01 EQU 00011000B ; BANK0 --> BANK1 TRANSFER ; BIT5: CPU-BANK-SELECT BANK1 EQU 00000000B ; BANK1 (64K FOR CPU) BANK0 EQU 00100000B ; BANK0 (48K FOR CPU) ; BIT6-7: NC SWITCH EQU 1CH ; READABLE SWITCH (FOR MONITOR PROM 3.0)  ; 1=OFF , 0=ON ; BIT0-2: FLOPPYTYPE ; xxxxx000 5" SS 48-TPI (200 kBytes) ; xxxxx001 5" DS 48-TPI (400 kBytes) ; xxxxx010 5" DS 96-TPI (800 kBytes) ; xxxxx011 5" DS 96-TPI (1232 kBytes) ; xxxxx1xx 8" DS (1232 kBytes) ; BIT3: CONSOLE BAUDRATE ; xxxx0xxx 9600 BAUD ; xxxx1xxx 19200 BAUD ; BIT4: CONSOLE HANSHAKE ; xxx0xxxx NO HANDSHAKE ; xxx1xxxx HANDSHAKE ; BIT5: TERMINAL TYPE ; xx0xxxxx SERIAL ; xx1xxxxx GRAPHIC ; BIT6-7: BOOTNING ; 00xxxxxx MONITOR ; 01xxxxxx FLOPPY ; 10xxxxxx WINCHESTER ; 11xxxxxx NETWORK WNRDAT EQU 1DH ; WINCHESTER READ DATA WNSTAT EQU 1EH ; WINCHESTER STATUS ; BIT0 - I/O ; BIT1 - C/D ; BIT2 - MSG ; BIT3 - BUSY ; BIT4 - REQ FLSTAT EQU WNSTAT ; FLOPPY STATUS ; BIT5 - SIDE1/0. ; BIT6 - FLOPPY INT.REQ. ; BIT7 - FLOPPY READY ; OPTIONAL GRAPHIC TERMINAL WITH ; WITH INTERRPUT DRIVEN HANDSHAKE PIOGAD EQU 20H ; PIO A GRAPHIC PORT DATA OUT (DISPLAY) PIOGAC EQU PIOGAD+1 ; PIO A GRAPHIC PORT CONTROL (WRITE ONLY) PIOGBD EQU PIOGAD+2 ; PIO B GRAPHIC PORT DATA IN (KBD) PIOGBC EQU PIOGAD+3 ; PIO B GRAPHIC PORT CONTROL (WRITE ONLY) END 4! }|x/Gy/OzS)80# 8 _733< _7ɏ0#  _7 8  y0 0(O0O "|ѧR|2~ (J/N)? J(j(N( n(O˯2 ((  :J{|W_0e. !0 )  |ʴb^#V#><*l^VR89 *n^VR8)*l^VR"l*n^VR"n0*l+"l(0(Oy(0~#O! !~O#N#F#x( ~#~# `i!W[ (Y/N)? Y(y(N( n(O˯2 ((  :Y'd ;@B'd  CP/M 3.0 IOSETUP - for the Jet Computer. Version 1.0 Rev F. Ad:}(0This program cannot run in Jet Net II. p:|1(5Requiers CP/M Plus Version 3.0 to execute. p:~=8/ ERROR: Not compatible BIOS revision. p͓2zd:(9(5 ERROR: Not compatible LOADER revision. p{͏>2zd Function complete :(G!+### Source drive name (or return for default) >(~_A8 A2DA_!~(?(; ERROR: You cannot store the loader on this unit. p Source on < then type return >pekq2{:{8T ERROR: Possible incompatible disk format. Type return to ignore.>p<2{:z(yu ERROR: Invalid drive name (Must be A through P)]_ ERROR: Selected disk not on system.2tO> > > >  > >>2rCt2r ͸ ͸ > ~˯o& L H E ͸ ͽ ÏS Ï͸ . ͸ |͸ *s ͸ ͸ * s ͸ ͸ *"s ͸ ͸ *$s ͸ ͸ *&s ͸ ͸ :(G!1͸  ~ m M͸ . h G(IO(OW(B_(Sg(X:2!  GG"+~2-2&#~2.2'~ 2(~ 2)~2*! :&!͂ !U :-^ :'!͂ !UN:(!|͂ !U7:)!c͂ !Ue:*!J͂ !U|c ͸   )0 #U͸ ͸ {͸ 2_]͸ U͸  ͸ >+5G!6~a8˯w#20!6:5O # (~ #~((#~ 1͕ ý 21y25S3:(G!:5(O[3~ ( $(  "# x22y(X/e   y25S3 (~$# ![3:5O # ~ ~ #~ (#~  20:2G:( c ͸ a͸ >+QG!R~a8˯w#:(G!:QOR~ ( $(  # x22y( ʜ ~$# :(<22ͪ ͸ > S +QG!R~a8˯w#:-ʮ :QORy~  ʥ !B(!!D(!|H(!cS( !JP¥ x2U =¥  (lS3y2Q:QO[3~ʥ !&w#~ ( #(  # ( ,  :-ݶ*+w#ݶݶݶݶwý ͕ S ͕ ý ͕ ý CP/M 3.0 IOSETUP - for the Jet Computer. Version 1.0 Rev F. L...Logical Assignment H...Hardware Setups E...Exit $ Your choice? $Parameters successfully stored $$Physical Devices: I=Input, O=Output, S=Serial, X=Xon-Xoff, B=Baudrate soft setup $ Logical Assignments for this system: $ Hardware Setup for this system: $$ CONIN: = $ CONOUT: = $ AUXIN: = $ AUXOUT: = $ LST: = $ Current Assignments: $ Give new attachment or $ Error in attachment $ Give new assignment or $ Error in assignment $Write error $ $$ Give physical device name or $ Give setup string or $ Error! Can look like this: B=75/1200,H=NO,D=6,S=2,P=NONE $ Device name not found $ Dev5ice...: Baudrate.: Handshake: Databits.: Stopbits.: Parity...: $ You cannot modify this device $ NONE 50 75 110 134 150 300 600 1200 1800 2400 3600 4800 7200 9600 19200 38400 7680075/12001200/75 NONE EVEN ODD 1.5 1 2 NO YES 5 6@ 7 8CONIN:=CONOUT:=AUXIN:=AUXOUT:=LST:=CON:=AUX:=XONXOFF $ $ $ $ $ $ $ $M= E: Ds 80H ; BUFFERT F\R SECTOR 0 ******************* ; 6,S=2,P=NONE $' f,0 ~~U" EQU >0DE3E' Setup.Z80~ÞCOPYRIGHT (C) 1980 DIGITAL RESEARCH Yl]RELIRLFATAL ERROR$l$l1 ͺ!"!6͓*~=:!ͣ !6:/::!ͣ !6:!!/ͣ < ͧv! s+p+q> ͍"̀ځ*>! q** DM* 1q>> ͍+s#r=>!r+s+q+q+p+q> ͍"!6> !*&*6!4¦:! *w* * * DM -* *s#r*"̀*":*. Tu -". u -2:~ l:\.~ -Ql.~ -dup. du -zT!"u*M: *M: !6>}!: :<2¨#u{u>!͘,T>͍)*DMTT"*%DMu{̀+s#r;'*DMu{̀N*"'ͅ>v":2T2u:ҙu͟!6>!ڙ: :<2:ҦT͟:!/Ҵ:͍ >>l͍ >!͘:/H*!*"'*DMT{T:lͪ : >>l?: &#*DMu{:2:2u͉Tp*>@O>*>@*w*~!s+q*&%*& *&%*2& "*DMT*+"*DM3T"!p+q!\#s>!s:+&:2̀&ͣ :22ͧ!s+q+q*M*͍"̀̀Hm*DM̀%*& "!6|*#:w*##:w* :w!6!6\2!:!H÷:!!6l+6**͍!6\* ^#V""!3"$"!o2ͣ :< J.< -B3!6#6!6*#s#r!6\wl!6!6!6\ʒÇ.  -›!&6:!&:&=O! N,:&<2&©**pH*#N*##* ^N0Jͭ1 Gͤͣ  <_1D**M*0G!'q:w**M0*"!6}!6:'҄Çͭ1Ҙ**͇H* >͘ҿ:'/**M*0} <_1K!6#6#6:  . - 12(:( T}L :2:2!:y :2̀y ͣ :22!""*"!6!6: *")*"*K: *: !6#6l: *)"ï !6l+6!6͔ :  G. - !"!\"!"*^#V" $!^q> !^] :^0O,h :^ AO,!_q:_OD :_OD !ap+q>`Mi !`\Mi !cp+q*bDMG!ep+q!d\+J<!hr+s+q*f&4 N,*gDM͵ DM̈́  ,*3&+) >>l!C9 < ,*3&+) ^#V*3M  ,!iq*# :iw*#"!͛o #*DMu{!"*!*"D*!s*D!s*D!s!6*!*"D*!s*D!s*D!s!6*M: *M: *M: O`iN928 "92;!j6:;!jU :j=O!< Hq!j40 *8M*9 !k6:;!kڇ :k=O!< N,!k4g  ,!lq*' :lw*#"!͛ '*DMT{*!*"!"!ns+q: ͪ :n!O> !>O:n2n5O!mT!w& 8 !w:o2% & *M͍ !6!6:n!2oK :m!o>O!mC!pq*pM !rp+q*q}OY *q|OY *8M *9DMg *;M !s6:;!sھ :s=O!< NY !s4ž !t6:;!t :t=O!< N: !t4 : 2u: :* *uMi  ,*3&+) N#F+q#p!C6:? *uMY !vq "w:R:ҕ *vM*w *3&+) N#F+q#p*3&+) >>l2C:Ҵ *vM *wDMg !yq:y/:yH >!y# :y::::y8*;< -*:;2:@:<!C6*y&>) N#FG>!ykb :y/:yH҅V :y ¦:823*3&+) *9s#r:y!"+"-"/"1!36<::y<@ Gb :!:y<b :I:y/ *yM :y#~ >!y/͐ :yI:I 7:[:y[Ϳ o >á2zO>Ҏ*zM@:zá2z*zM͵:z,=>)-,),>,=*#"!|p+q*{~**{ >*{#"{>ʹ*~>~,H !6)!\""!o)ͣ !6!6ʹͼi**& w:<2cͣ ʹ7*~-w!6*~)…!6:ғͣ !6*"*~)*:º!6***̈́:*:!6!6lͼͣ Þ!6*~>ʤ*#"}!6*:3ͣ *~=X!6*#"}:X!"}**Ҁ* *}s#r*>wÑ**}̈́ͼҡͣ ʹ*~]*~D!6*~I!6*~M!6*~P!6ͣ ʹè!q!6!6*"ʹ!""!o8ͣ >͍J!"ͼҍ*~(c͆Ç*~_[],()!q: > :a/>z!/H:_2:!p+q*^#V"*##^#V"!6 !6+6:W: Q!6l<*6+: m+_Ax!!6Aڙ:ڐ!l+}::*~:Hھ!*#~A<*wO>!*&*6 '!6:.+A: !l+: !*&*\:<2O* N2!6> !i*& :b>!4F>:<2O* :w:!4~ʶ 6*#"*{zڶ!"ͧ*!~2xG:2G:p ˆx!4~ 6*#"*{z!"*!~2xG:2G x{_ C#5>ɯ$!p+q!6> !ڌ*&*~ x*&*N,:….,!4Q!r+s+p+q*DMG*DMFEͣ !s+p+q+p+q+p+qWͣ !">͍+s#r!oM*DM`:$*DM͐O>!>͍ ͣ !9*DM͠O>9ͣ *"*#"`!r+s+p+q+p+q***DMͮ*!r+s+p+q+p+q***DMͮ!p+q*DMp!6 > !*&*6!4²*DMͰͣ !p+q * 6 * 6*DM̀*͍!p+q*DM+ͣ !q*& , ,!p+q*  !p+q*!p+q*!p+q*! p+q*! p+q* ! p+q* !p+q`*!p+q*_{ozg_ogDM!>))덑o|g = DM!>))4 =,_{ozg~ D^#V) N~ U^#V|g}o `_{ozgO{ozgi`N#Fogo&og_{_z#WLIB 1.1 $REL $$$IRL $$$INDEX ERROR$NO MODULE: $SYNTAX ERROR$APDCentry symbol $select common block $program name $request $error 4 $define common size $chain external $define entry point $error 8 $external + offset $define data size $set program counter $chain address $define program size $end program $end file$FTiw(5ABORTED$DISK READ ERROR$DISK WRITE ERROR$CANNOT CLOSE$DIRECTORY FULL$NO FILE: $6çCOPYRIGHT (C) 1980 DIGITAL RESEARCH Yl]? OVL LINKING $ $ 1L9M9!96w:o9!9D:!""!""!"9*9^#V"9"q::u9 ͥ6**=;"`:"b:q:b:͞8.96`:q:͞8"9|!96wj1:9R,v!!]:ڤ*]:&f;) N#F͋41!]:4:u92:2:2;2E;2u;2;2;2;!D:6+6!E:6!"p9!"m9}2o9!z962v92x92w9!t96X!"y:"{:"}:":":":":":":":":":":":":":"i:"k:"m:"o:}2:!:6#6#6*9"q:2C:2D:2E:2R:!"X:o&"Z:|!"s:!"p;";";";":":";"7;*+":*+":*+" ;*+"9;!":":";"?;!":":";"A;:9*b::9=o&))9  ^#V!!<4*<&^<) <͞8-*<&^<) ^#V"d:M*<&^<) q#p!<4*9&))9  *`:s#r*A:)8"p9*9&))9 q#p:9<29O>D:9=29D:9ڗ*9&))9 ^#V"p9  ^#V"`:*`:DM!96#~ͬ . ":\ -:+: .+: -:9":5*.:~=ͬ :9('*.:~(*.:~)H^*.:~,NDͬ :9['(:9vC()!o96>5!B".:ͬ . ":\ -ˆ*.:~=Ÿͬ ï.+: -§:9ҹ'*.:~*.:~(H*.:~,Dͬ :9'ù:w92y9:9F:9(C(͆7:9):o9:o9H4!"p9>:o929*p9"95*.:~(*.:~ʐn*.:~)p̀^*.:~*.:~(HҍDO:9ʛD*Ͳ!6~̈́6*& 6:[],()?$! : @: <_2 <: !#<ڲ*#<& :<«>!#<4>*.:#".:*.:N2<&õ͵:< ͵!<6 !%<6+6:%< :%<  !<6͸ !\6͊ !!%<6͊> :%<5 !͸ ͵" :<:„ :\:%<Hb !:]A<2\O>v !*%<&\ 6 ô !%<6:<.° ͵͊ڰ :%< ڧ !͸ ͵Ô ! :%<<2% :<02<> : :>!"&<͵͊6 - *&<))))*<& "&<0 D͵ *&<:/͵: W :ZD͵:ڎ :!Q: D*Q:&J: : >!:*!^:6+":^:$t 8'> *0< ~L*0< DMB5*0< 6*0w#6!4w#6*0<##N#F*.< ~O`i~8p8!6Ͷ8ikS*0< DMv5*0< DMd5*0< *0<##N#Fq#pä*0<##q#p*u:#^#V*u: ^#V*u: ^#V*u:~*u:~*u:>*u:~*u: ^#V*w: ^#V!8:=<Hw!>:><Hw!?:?<Hw!@:@<Hw!B͔8>ͥG<8'*u:"w:*E<#"E<ͺ"u:>͔8$>ͥG<ͮ8!TJ<ͫ8:P<Hr:Q<ҁ!U<6 Æ!U<6:U<q:ͫ8+s#r!`:͹8ң96:T<Һ*JE<ͫ8*P<&i:) N#F,DM,*LE<ͫ8F*P<&i:) *q:s#rN*q:DMͷ!V<6>!V<ڷ!"Y<*V<&i:) ^#V"u:>u:ͫ8ʝͺ"W<*Y![<,*[<&i:) ^#V"u:*[<&<) N#F.>u:ͫ8%OkͥDMͪͮDMͪDMͪͺ"u:![<4!"i:"k:"m:"o:*d:##6*d: 6*d:^#V!`=p+q*d:*_=s#r*d: >!a=q*d: :a=w*d:##>?!b=q*d:##:b=w*d:##~*d:##>w*d:##~*d:##>w*d: ~!c=q*d: >:c=Hẅ́d:8++"\<*\<^#V!e=p+q̈́d:8++"\<*\<*d=s#r*d: ^#V!g=p+q*d: *f=s#r*d: ~!h=q*d: >:h=Hw!k=s+p+q!^=6:k==2k=ʱ*i=:^=2^=*i=#"i=Ñ:^=2^=!n=s+p+qͽ"d:`:d:͞8͹h!n=*l=*d: DM*n=>*>6̈́d:8+s#r!r=s+q+p+q*o=DM*q=̈́*^=&^<) ^#V"d:>d:ͫ8ʆh!q=}*o=*d: DM*q=>*}U!r=}>M"d:<>!|=r+s+q+q+q+p+q+q+p+q:u=2}=:z=Һ!}=44*`:"d:*}=& "`:q:ͮ896<*s=DM*u=̈́*^=&^<) N#FU*^=&^<) *d:s#r*}=M͍*v=DM>*y=M*u=Ms*x=Mf*u=*d: *s=DM -B:z=Y*{=DM*d: ~#k!{96 MODULE TOP $UNDEFINED START SYMBOL: $YY???? $$$XX???? $$$RQST$ UNDEFINED SYMBOLS: $ABSOLUTE $CODE SIZE $DATA SIZE $COMMON SIZE $USE FACTOR $!=q*=MͲ!~=4!=q> !=8:=0OͲC:= AOͲ!=q:=O:=O!=p+q!=̈́8MD>=08MD:;!t;!;!;:u;2\. ] -Ÿ\ͩ6!t;6!;6!;6!;6!=6+6>!=*=&f;) ^#V"= *= ~ *= DMv5 *= 6!=6:=<2=:=7::2\. ] -)\ͩ6*p9###H:ͮ8!D:U!\:6*p9###F:ͮ8!C:r!\:6*p9###X:ͮ8҉!\:6:R:>S:ͫ8:U:H:C:/HҼ!\:6!\:6:E:!C:!\:6!\:6:C:*F:"::\:*p9###":*p9"::D:*H:":8*:*:"::r98*:)8":*:*:":Z:X:͞8_X:Z:͞8#"y:e!"y:!:6*X:":!=6>!=ڞ*=&y:) >Ͷ8Ҕͥ:=<2=v!":::2=!=6:=#w:==2= *=&:) *=&: N!: ͠8*=&: ~2=*=& :=w:=2=:=<2=õ*=&: :=w::<2:*b:"d:`:d:͞8q͜/!9H`2UO!: 8DM>ͪ̈́d:8+s#r&!]:6>!]:7*]:&f;) N#F͋4:*]:&<) N#F.B2=:="="=:=O>"=n2=ð-*]:&i:) ^#V"u:>u:ͫ8-2=ͥ"=ͮ"=!"=nͺ"u::]:<2]:w!=r+s+p+q*=}*=_DM͘4*=#*=|_͘4!=p+q*="d:2:=2=:=O>Ґ*=DM^"=ã*=&:) =8"=:=O>:=O>==͞8UO!: ͹8"=*=*="=*=DM*=8*d: ~*d: :!z9/H!"=ͽ"d:`:d:͞8HҴ>=08>͔8S6!~=6U`/wUp/>=08 \8 M`͹ҖÞ2DM_   *=#"=̈́d:8+s#r >!=Ͷ86!=6>#w#62~=ͽ"d:`:d:͞8N/=:=!=6>=08>͔8'6!~=6w*=#"=>&8)))M`̈́d:8+s#r>!=Ͷ8\66!=q!=:~=v d!=6h!=ڤ:==O! *d:N:=<2=|:E:J:*Q:M2"V:!"V:|!=6:Q:!=:==O!J: NͲ:=<2=6D:R:*U:&:) S:8"V:D>!{:Ͷ81*:"V:DX:ͣ8D*X:"V:Z:X:͞8mX:Z:͞8#DM*X:v6*:DM*:6*:DM*:6*:DM*:6`:s:͞89ͮ8*9|=ͫ8 Ͳ(Ͳ*=DM_-Ͳ*=*=+DM_)Ͳl*|9DM_68f ͥOr:t9Z^E.:n~:x9ZyU/?OVLAY?OVLA0RELIRLIRLREL))O`i~8p8>!:!>6::!>:>=O!: NͲ!>4½)2:͕":)2::: !:6!>6::!>. ):>=O!: Hq!>4 *h&\8*|& "9>*7:DM\͏5*9+"9!>q:>2]:*]:&f;) N#F͋4!>q:]:!f:Ҏ *]:&y:) N#F*>͘4:]: Z:y:͞8Ҽ *y:"Z:X:y:͞8 *y:"X:*]:&y:) N#F+q#p!>s+p+q::2>O!: :8">*>DM*>h!ͮ"!>2>:>>!>ͫ8HA!ͱ!">G!*!>">*>DM*>MC:>e!*]:M͋!*>*>*]:*>*>5:=Ҭ!ͱ!"!>>͔8ž!*!>">!>6í!!:]:2%>*>M^ *>DM4*>#DM4O`i~8p8"#>*%>M^ *#>*b:"d:`:d:͞8%"*d: ~#"*d: 6̈́d:8+s#r!!{96:*:MH"H"!^:6:*:Mi"2"g:͜2f:o"=6*:::: -y"::29:*::ͺ/Ҵ":*:͉:*:M"!:͹8"/Ͳͯ/Ͳ Ͳ=6#:*:*:*:*:͉*:*:"::*:M/I#:*:͉*d:DM :*:Mҟ#{#=ͯ6Ü#*:&:) :8DM>*:Mf#:*:*:&:) :8*:͉*]:&y:) N#F*]:*:DM5!=6#!=6*:":*:M^ :]:$$*g:*:":C$*]:&:) :8*]:&y:) q#p:]:P$!=6*]:&y:) N#F *:":>!:Ͷ8::HҲ$:R:Ҕ$=6ò$*:&:) :8"S:::2U:!R:6:0:$)$ò$!&>6>!&>%%*&>&:) *&>&:) 8*&>&:) q#p*&>&y:) q#p*&>&:) >w#6:&><2&>$s:q:͞87%*q:"s::G%͸*9"q:^ :_:/2^::{9]%!!)>s+p+q:)>ˆ%*g:*'>"'>:f:҅%!)>6Ý%*)>&:) '>8+s#r*]:&y:) N#F*]:%*'>DM*)>M͋%*]:&y:) N#F*'>*)>*]:5y y !*>q:*> &>!*>&:*>#&+"ÿ&:*>1&p"ÿ&:*>?&k$ÿ&:^:ҿ&:*>=O!& ^#VI"ÿ&ÿ&͈"ÿ&>ÿ&͵"ÿ&#ÿ&T#ÿ&#ÿ&#ÿ&$ÿ&$ÿ&Q$ÿ&d$ÿ&W&]&`&f&o&u&{&&&&&&&!+>6)&)2->:^:&*->My (')2,>')2+>:+> '*+>M%('͕".>:^:('*.>DM*,>^%:+>&7','!0:6&H'='!0:6!"1:"7::!:'*:͗8"1:"7:. 9\ -u')29!hʦ':92h\͕6¦'\=45)2|29!:6*7:"1:!"9"9^ :_:/2^::!:!_:' ',':e (.e -'e>*2!:\d5I'}/B(}͉ͽ"d:`:d:͞8)͹(:v92\!0>6>!0>گ(h!0>҈(*0>&\ 6 å(:0>=O! *d:*0>&\ w:0><20>g(!!:6.e -¼(\W5/(!!:6.e -(\d5*d:"1>!_:6I'*1>"d:̈́7d:8+s#rI(.: -)!:6!:6^ ͽ"d:`:d:͞8)/)*{:DM>fy ^%y !":y y *d:"4>#*4>"d:!3>6>!3>)h!3>ڶ):3>=O! *d:Ny û) y :3><23>Œ)*:"::)͸*9"q:̈́d:8+s#r5)!0:4~ (*6*1:#"1:*7:{z*!"1:/ *1:!>~26>xG:6>26>G )x{_ P*#B*>ɯ`iq#zV*COMPRLRSPSPROVLSYM!;>q*5:> :;>w*5:#"5:!3:͹8ڦ*>*3:DM\͔5!"5:!<>q:8>!<>28>:7><27>*!7>6*8>Mq*!8>6!=>q*=>Mq**A:#"A:!?>p+q*>>}O**>>|O*::+:o9+h,*p9"A::\:,+**V:DM**X:":!@>6::=!@>q+*@>&: N!: p9͞8j+*@>&: N͍+!@>47+:o9:o9HҌ+ -!C>q:C>¢+*X:"D>ó+*C>&:) ^#V"D>D>A:͞8+96D>A:͞8+*+*C>&f;) N#F͋4*C>&y:) >Ͷ8,:C>,*X:DM',,',|9A:͞8&,*A:"|9!G>p+q*F>"H>*C>&y:) F>8+!H>͹8g,*H>DM4O**H>"H>3,::=O!: N!: !y: 8*p9͗8"A>**A>DM**:o9,***p9DM*,*m9DM****:r9,*:DM*,*!J>6>!J> -*!J>4,*p9"A::\:(-ͦ-ͦ-ͦ-!L>6::=!L>|-*L>&: ~2K>u-*K>&:) A:͠8e-ͦ-J-:r-.u--!L>4--*p9*A>A:ͮ8ҕ-ͦ-|-:7>ʥ-ͦ-Õ-!O>q*O>Mͧ**A:#"A:M>A:͞8-ͦ-ù-ͦ-*K>&i:) ^#V"u:>u:ͫ8.ͥ*K>&:) 8"M>͹-ͺ"u:-*K>&<) N#F.*0< ~R.*0< DMd5*0< *0<##N#Fq#p].*0<##q#p2P>:P>ʤ.*K>&:) 8"M>"9:P>O>Ҙ."9͹-2P>c.>5:08>͔8ʾ.q*å.>*5:DM\͔5\v5:w9Z.. \": -.:e /.*o9&\8_* DMe - /:w9#/:w92\\B5:9 A/. ~9\ -9/!"5:}28>27>*ͥ.:x9Z^/. \": -f/.en* -v/:x9ʌ/:x92\\B5!"5:}2R>ͽ"d:`:d:͞8(0͹/H02DMv0 q*!Q>6h!Q>/:Q>=O! *d:Nq*:Q><2Q>/:R><2R>0 q* q*0 q*̈́d:8+s#râ/ q* q*ͥ.!S>q> !S>O0:S>0Oq*Z0:S> AOq*!T>q:T>O60:T>O60!V>p+q*U>|O[0*U>}O[0*9>!=8"W>*W>!=8!Y>s:h0:Y>2h\͕60\>645*W>!=8!|s2*9͗8"9>. \~9 -0:9 1*9>"9>\d5͍0C\͏5!Z>s*9>!=8C "9*9*|9s#r͍0C*Z>&\8DM\͔5:j2j\v5:9ҁ1*|9)8"|9:y9ZŠ1a9ҟ10ñ1g9ұ10!_>q.*[> :_>w*[> ~!`>q*[> :`>w*[> *[> ^#VN#FR* *[> 6*[>^#V!=8"b>?8!a>s1!a>P2*[> DMv5*a>M1*[> DM͕6P2*[> DML5*b>!=8MͲ1*[>  *[> ͞8ҍ2*[>  *[> N#Fq#p *[> ~ڮ2*[> DMB5 *[> 61*[> N#F*[> *[> N#F͔51!e>p+q*[> N#F*d>?8^8*[>q#p*[>*[> 8+*[>##q#p*[>*[> N#F^#V?8*[> s#r *[> N#F`i"h>*[> N#F `i"j>*h>"f>j>f>͞8ڐ3*f>+*[> ^#V\8DM2_2*f>"f>\3*[> ^#V*j>\8DM2*[>  *[> ͞8Ҿ31*[> N#F*[> *[> N#F͏5!n>s+p+q*[>l>͠84 *[> ~4_2*l>DM2ͦ3Ê4*[>##l>͞8Ҋ4 *[> ~34_2*l>DM2:n>j4*[>  *[> N#FPY͹8d463g4ͦ3Ê4*[>  *[> ͞8҇41Ê4ͦ3!p>p+q*o>"[>!s>s+p+q*q>DM3*[> ^#V"]>*[> N#F*q>?8*]>:s>w *[> 6!u>p+q*t>DM3*[> ^#V"]>*[> N#F*t>?8*]>~   +5{>.+55OͲ5w66ͩ6́5;6<566́5͕6<>́5͕6<>645͜6<H66! w #ˆ5>Ö5>2,6""6"$6yo`"&6!"*6͋6-66*&6|6 "&6*"6MD6*$6DM:,65ͷ6g666Ͱ66**6|6U6*$645*"6""6**6#"*6ú56**6ABORTED$NO SPACE$NO FILE: $CANNOT CLOSE$DISK READ ERROR: $DISK WRITE ERROR$YYYP   YP6YPYPYPYPYPYP Ͳ ò!>6#6͐6">*>|$7>9ͫ8"|>##*|> ~!7!>6D7*>|?7!>66"|>D7!>6:>Y7!~>6#6#6Å7*|>~2~>*|> ~2>:>z7:>2>*|> ~2>!>6>!>ڰ7*>&v> ~/*>&: w!>4‹7:72"g:^ *:"|> *g:":*9My *9My *9My *~>My *>My *>My *|>":i`N#Fog_og_{ozg_ogDM!>))덑o|gV8 =D8DM!>))k8 =c8_{ozg^#V) ~8^#V|g}o ˆ8_{ozgi`N#Fogo&og_{_z#W LINK 1.31 $01/04/83?MEMRY$MEMRYX MEMORY OVERFLOW, USE [A] SWITCH$INSUFFICIENT MEMORY$OVERLAPPING SEGMENTS$ XXABS $$$XXPROG $$$XXDATA $$$XXCOMM $$$::;7;YYABS $$$YYPROG $$$YYDATA $$$YYCOMM $$$n;;;;7INDEX ERROR$MULTIPLE DEFINITION: $MAIN MODULE ERROR$FIRST COMMON NOT LARGEST$COMMON ERROR$UNRECOGNIZED ITEM $( COPYRIGHT (C) 1977 DIGITAL RESEARCH 112O02Z0̀%!"K2.>2.*M0"$/̓%!"":g0i!"P0"R0"2:0v: 0$  :[0-ʬ+ʬ* :[0!_0M!f0P p  !   :O0Ĝ!":O0*V0}|<r ͪ*|Ĵ:O0_͑H *V0"Ù*V0"E V» ͪ»**»"Ù*K0"X0!0NA#~' ~p"K0*K0N"X0!0q#*w œ:0!x ͜ *V0*R0:_0̍"V02*M0r; !:r :0F: 0e%;m ">2:0b: 020 W,F:0b: 0e,ʹ:re*X0#![0~ʇww2/ͬ:2T/-"."$/2/>2.v:.ʸ!/6+͕%>20:.ʮ:.0209$<!5*}Ģ*V0":0y: 0:yv! X! ^#fkX _~ 0^ Z   2 5 8  :0‰:0=ʉG! 0ʃF#2sÖ*I0| E2V ,[ ͊m *R0"R0"P0 m E2D2V ,ʾ ͊:/ m :/ "> 2/:Į:0 : 0 -Ͳ !/6+:.;?*$/*."$/?"$/:.l*.^#V{r+s5*.^#V ʓ:. r+s!06#wÚ> 209!e/~6![0~6".~,#!0w9 9*.~6 *: 0,Ĵ2f/*.s#r2[02e/*.#"X0$<5ͬ*$/"M00:T/2:/2[0 v>20*.".2[0v*R0m "R0͍"R0!/w >=G*R0*I0"R0"R0 m :/ }>͞ ¥͢ :O0*V0*ʿ͜">2:O0:0:O0!!4:0: 0,>"4:O0: 2\0:0=: 0 F!Fʹ%*X0"`0>2Z0*X0":0k: 0T!T:\0¦:O0¦:0=ʦ ʦ*"X0 !':[0'Tx»!Z04TT!Z05T:\0!":]0!**V0":O0*X0~ Ĵ*X06 '>#G*I0!" :0 :Z0 !0N*K0:O0Ÿ"b0+"X0yʛ 'É' Ͳ >ͮ 222:0: 0 !ͮ-:0:0!4 :0& : 0::0!xI !4̨ e ::̮>͞ } !~5:Į ͵ !4̨!~5 G!~Ҩ4_!p!~ʮ5^!~> >2\0:0N *K0"+"X0:0 >''!:0N : 0,N :0 >  > !0N#~' ) > ''*K0"V0:\0x ʹ:\0" m }*K0"+"X0''*K0"V0>"4ͬ:2T/:[0 “ 2/-*M0"$/*X0!{#zڿ ~+"X0*M0+"M0wß #"K0*M0".:\0 N]T s#r+*V0*{_zW".:\02.R     % *I0:/ ͪ% ͬ:O0ĭ%  :.ʢ :0¢ *K0+"X0!2<20*#"" : 00Ĩ!??" 09"K0+"X0$< :0¢ : 0,? ʹ  *} :]0 :O0 :0 ͤ%:e0ĭ%:0 : 0  ͬͧ%vʹ   ͺ :0: 0 !;* _!5 ^#fkS \ h n 2 ͠ ͻ ͵ ͠ ͖ 8{ Ăy0 2͵ ͖ Gͻ ͋ ͖ 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D y0P 2!0^4! 0q :0Ė: 0,; Ė*I0m |}$† ͌oy Ԍ͋ 8O͖ Ăy01y 1m X:0 : 0, >C͘%:0 : 0 v;:0 : 0 v-!v !v-ʹ {ozg:.7ͮ2Z0!O0~4l!"*|>"V0*""J͊!/6 !/͒%:^0ʏ>2.͡%ͱ*K0*T0&*M0*T0&\ ͍!/w#õH USE FACTOR !/͒%*"P0Þ%z{*P0"R0*"V0 !":O0Ģ*R0̜*R0ĜG:O0xě%:/ *R0̍:xz*P0#"P0E2D20:b!^4!/wjj*R0!6zz{z4A_A?ɯ2.2*T0"V0!.8w# *V0*K0{zҤ*b0+"X0 =$**X0#Þ!.*V0".#"X0$:d0<:0<! 0~?<#ʐ: 0͡!.".^#V"V0}{##~2.*.^#V#"."V0*V0}d##~<2.G*V0##"X0:.> u!.~w>w> u:.8P'!5^!/~ !~620͕%2.|z}z> u!.~w:.W=*u!.4C*V0^#V"V0ý!.5¯:20͕%!^4!/w>R͘%>V͘%>Dý>Pý>Lý>Oý>Bý>Sý>N͘%*6".~ 6Yl]-!2~B6~44O!! s#r!1~ _6^4! w!p!2~~!55N!! N#fiooo&)^#fk9BIO[ov ͌z{>ɯo>g͌"!6ů{_zW5>)D*OxG !?DM!xGyO23)#͌)=R|g}o=^͌͌roz{͉͌͌}|͉͌Þ͌Þ͌ë͉͌!!o#Ã͌zg{o͌zg{o͌zg{oolo&3:0: 0 ;!,ɯ2122=2 !"I0&q!1~\5_! ~͔D:2:/ *!"I0:/ :0:0! 0^#=ʙV¨*0!҂ :0:0& !!>O: >2 yU`:10_!~0!1s! ~͔ yU!1~N=w_! ~QZP>2 ypP͘% >U̘%>: 2 3>E͘%óf:.O*.~H:.=!4>͕%0:/#". ͆%2G:0xa{_ ʇ ʇ:0x҇_<20!/w:e/S:e/9ɯ2f/2d/2e/:0:e/ !2f/g/~#»S͉!f/~4!g/_:e/w2e/ɯ<*V0"36*"V0ɯ2!4!f/6".!f/~55!d/^4!g/~f:.:e/JGwf^l͗^{:e/&{!f/4#ww&ʞGʱ2e/xf͗ :e/&ʕ:0  ý͗&{&{ý͗  !e/~&>62/-!.6*M0"$/B".2f/*"V0͗ 2f/2e/2[020> 2͕%>20ɯ202!0~@$6^4#:[0w~$w:[00 6:[0A:[0?e@eAɷP6 o2[0:Z0ʦ:\0 :O0¦:[0':[0 !20:[0 R;/>20:Z0?:\0:O0?́;B*`0*X0++{z~ ++!+"X0:Z02Z0́ͪ'2Z0X:[0*K: ḰͪX? X́ö20Pg>ã6r>ã:[0'ƒ2[0>ã ¡:.ʔ>+2/͕%!/6 >20>20:[02́:0:Z0: 0=!EQ<!LT:[0=!LE>!GT:[0=!GE2[0" 0!04>20![0:0/ʦg¦´/ʦA¦:[0O<QA>HHR>22[0m:B_>fD> j!052!"0!0N#~#A҄0Æ7O!~*0!ʩң)Ú "0 x:[0 '¦́'æ:[0 :[0,;%:[0 !:[0; ,202́/>20:[02́:0G:0::0l:[0'́:[0' 20/:[0'|>20^—́:[0  <¨!~4 >¼!~5 : >20>V>O>I>B͘%!QéÉ $ ? H Y ` e Ò ü ò ~ÏGÇåûfD?<==:e>?; ><>; ;<=R>>>F>;>G==<==>=s;=P=*>=$?P:-?]>*<<==<;=>>y> ;: =;>?>P?<=?>>=<<i;m=>c==>o>v<=<;8?N!Nw#w#W!"V0!.w#w#l2N!.~4^!.~w!.ͼ!.ͼ!.ͼ!/~w!$/ͼ!D/~w!T/~wN#Fp+q!.~^!.!. !. !. !/!$/ !D/!T/5~wN#Fq#p>BØ%!0" * F#%2NG*V0##~w*V0##~<͉:.t!.N!. yq~t +aG=#w#wY*M0!0n& {ozg"V0!K0{#z"M0b*M0!0N#yʢ ~Õb!."O1:N *M0!$/{#z"V0$ _!.*V0~#~1 ~#"M0û1 !͒%Þ%SYMBOL TABLE OVERFLOW G*V0##~w*V0##~=*V0_###1 s#r1 ^#V1 ##"X0P wP ~O!0~z 6~=ͼ !0N#~ͼ „ Ͳ O2Ny *\ ?=)$=)w#Ž&!\60 ڱ&>GO#w ³&>O # &6 &6L#6I#6B#w2|r&\u'>2]0!"%![0~2%wG&!,x&>82%2%!"b0*"M0!1"%"&"@&#"K0"T0' _#~6' D':%A6'>:6'D'>.6'D'>-6'x&!,N'!k-x&!,N':% '> ':%'_!% '6 4ɯ2%2]02e02d02g02%:\ =)!%w#w#w#w#w#w#>2^02_0:m$(!~#$,(~(# 3(%Aʩ(Pʩ(Sʩ(Hʩ(Lʩ(*t(+t(-¶(^0~Sʣ(Mʣ(e0Lʣ(d0Qʣ(g0Rʣ(%1¶(x#3(~AҶ(#3(#6 !)-x&!x&!%͉&!%͉&ͳ'(`&͛'͠':%)!&͉&l&͛'͠'!%60#60#60#>2f0!"&:O0*!"%2%2%2%Z&%u'!-x&z{:]0ʢ)*%F)w)!"%r&\‰)*%#"%+~):.2]0ʢ)r&\!~-N'*%F))Z&!"%*%B&%)¼))*)6# )G&*%*%#"%~!<-x&G:%7*$*x*7*x2*Ϳ'5*9**&*&w#"&!F)`&!"&*&%~ʅ*B&Œ*`*G&`*!S-x&ö,͟**>&*@&w#">&!F)l&!">&*@&&`*_!%~ *2%*b0}!,~ +*#+> *>#**> **b0~>+*#2+> *> *> *}2%!%*O*:/ :O0:%y*:%!O0•+:e0!]0+~,:/ ,!/~ +:f0,:/++:_0,+:/#,:/ ,:_0=+!/~ +!0s!%~!%*4:0!/,G~Y+#x=+> Y+> Y+20!/>x6 #=,G!/~ pͳ'*&}?,>*/,`&%͈':^0*+,!&6S#6Y#6M#w!&w:%2%!"&ͳ'*2%`&%͛'͠'+,:%ʶ,:%.*P0"%.*>&}ʶ,>͕*æ,:%,l&&͈'!-x&CP/M MACRO ASSEM 2.0 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR INVALID PARAMETER: SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES UNBALANCED MACRO LIB END OF ASSEMBLY G:%x-!%~--.-*P0*%O {-z-.*P0"%!%^4!%w..WƐ'@'Õ*>:͕*!%^Ww*%{-|-}--{?.!%~#-6.-> ͕*> ͕*͞*> ͞*ws! }|x/Gy/OzS)80# 8 _733< _7ɏ0#  _7 8  y0 0(O0O "|ѧR|2~ (J/N)? J(j(N( n(O˯2 ((  :J{|W_0e. !0 )  |ʴb^#V#><*l^VR89 *n^VR8)*l^VR"l*n^VR"n0*l+"l(0(Oy(0~#O! !~O#N#F#x( ~#~# `i!W[ (Y/N)? Y(y(N( n(O˯2 ((  :Y'd ;@B'd  Program for landing the winchester heads on landing zone. Ad:}(4 This program will not work in Jet-Net II. :~83 Requires the BIOS revision F to execute. 8 You cannot run this program in a WorkStation. = : You cannot run this program in a Floppy system. = !Using Adaptec controller Using Xebec controller >A2O0~< Now, You can turn off the Jet80 computer.Accessing the landing zone on drive ::~*y  2 b~O#~2~/_~/G~/O+| {/2|/2}/2͟͏Ͷ Error::/C/(͇W͇z/>y͇!p͇͟!͏V2850701PSW!!3( 6.6 ; ; !32w'ww-w .!36#!3~/!ɐ I.D. CRC Error Uncorrectable data error I.D. Address mark not found Data address mark not found Record not fou9nd Seek error Data check in no retry mode Ecc error during verify Interleave error Unformatted or bad format on winchester ! Use FORMATER ! Self test failed Defective track (media error) Illegal block address Volume overflow Invalid logical unit No message for this error!3; p6&6, 5,('ͣ ͸  O( G   8($ͣ  ͸   . 6&~&_(~'/_  OG~/#.N( O.F( O /_ {w&(7{/(6&~&_(~'/_  OG~/#.N( O.F( O /_ PATCH VERSION3.0 PATCH.COM COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]:o2! *m" -< |#}0#:] <>2   : : :3! ]~. a{ ##e~ a{ ##~ 2m#~2n*m" : aB{B @2\! :\Ҥ!e~ #Z!CO"e>M2g>2 zÖ: *e}C|O:gM>2 *e}P|R:gL>2 \2 |: @: ,?<2 L*>2 ó!>2 6 =++w: #<: +=6 ?>!6 #=D!~a_{_ w#Q: Ƃ2 * 6 : ʝʯ>2 '0: =„>2 '0:S ʂ>2 '0: =±! 3 #:! ]* } 1]:]>2 >2 A: N* | :02# }0 _'_:# 2$ !]}02$ * " * " ? <͍ <ͭ* |́* }́* |́* }́2 >:" '2" {2 z2 : 2 ܻ: WÈ* |}* |}: _:$ d:$ G* |}* |}2 : {2 x < <͍ C?C C >2% % :' YPyPtz\ V xw <͍ <:$ ڶҏکÜ:$ 2) >:$ 2) >:$ 2) >:$ =2) >2* ! :* O "+ !9 :) O F*+ ~w x <͍: > > 2}!"~"\ʽtS \ _" 2 ~ B* : #=I" 2 ^C* : #=b<* }B* | B!]>I.C!e>I<:\̹@B:C<: 0B C:" 2( :" 00B:( 0B C: 9:<!e>b  9O9$9p<!>b9f<:] ͍ͣ9<!m>I#   <9ͣ< <9͍9<:\@B:C|zʒt< <1Q ̓ͮUtͳr CP/M 3 PATCH - Version 3.0$ ERROR: $PATCH requires CP/M 3$Invalid file type: .$Serial number mismatch$No file: $False password: $Invalid patch number: $Drive $ is R/O$ on $Illegal drive: $ Enter File: $ Enter Password: $ Do you want to indicate that patch $ Valid file types: COM or PRL$ Valid patch numbers: 1-32$ Current patches for $ WARNING: Patches greater than $ exist for $ has been installed$ already exists for $ Patch $None$ for $ Patch installed$ Patch not installed$ $ $: $ COMPRL151282 @91"CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]͈͋> (12/06/82) CP/M 3 PIP VERS 3.0 DISK READ$DISK WRITE$VERIFY$INVALID DESTINATION$INVALID SOURCE$USER ABORTED$BAD PARAMETER$INVALID USER NUMBER$INVALID FORMAT$HEX RECORD CHECKSUM$FILE NOT FOUND$START NOT FOUND$QUIT NOT FOUND$INVALID HEX DIGIT$CLOSE FILE$UNEXPECTED END OF HEX FILE$INVALID SEPARATOR$NO DIRECTORY SPACE$INVALID FORMAT WITH SPARCE FILE$MAKE FILE$OPEN FILE$PRINTER BUSY$CAN'T DELETE TEMP FILE$ *5<P_lz)<\fp}NO DIRECTORY SPACE$NO DATA BLOCK$CAN'T CLOSE CURRENT EXTENT$SEEK TO UNWRITTEN EXTENT$RANDOM RECORD OUT OF RANGE$RECORDS DON'T MATCH$RECORD LOCKED$INVALID FILENAME$FCB CHECKSUM$2FTe$NONRECOVERABLE$R/O DISK$R/O FILE$INVALID DISK SELECT$INCOMPATIBLE MODE$INVALID PASSWORD$ALREADY EXISTS$LIMIT EXCEEDED$eT     =.:;,<> _[]OUTPRNLSTAXOAUXCONAXIINPNULEOFERROR: $ - $$$$DESTINATION IS R/O, DELETE (Y/N)? $**NOT DELETED**$COPYING -$ (Y/N)? $REQUIRES CP/M 3$CP/M 3 PIP VERSION 3.0$:"Q}#( :}#2m#}1͖-m:m#8ͺk 2#2$M 2"!\#6!z#6:z#b:m#2}#!$6+6+6!o#6!"6!"_#"X#}2d#2g#2h#2c#2z#!n#6!e#6#6!j#6!"6:m#ҹ*ͨͺ!#6:}#͑ ͖%#:d#%# :p#=:p#_HH ":S# N:"H ͵!S#6:d#<"$\( K"#&#( Az:S#:" H҃͵!"6&#,"( Az>!S#Ҕͥ z:S#ʡ!e#6:j#z!f#6:p#,:p# Hͥ :p#,2j#!c#w:S#!$6:$!$6:$!$6:"> !"H!d#"ͥ :"/!f#6:" T!f#6>'!f#Q!f#4<g:" dgA2:j#w"á:m#2}#b! $p+q*$}2{#|2x#!!$q:!$_ ͨ ͨ!#$p+q*"$ !%$p+qͺ*$$DM!|#6|#  !'$p+q*&$!)$p+q$*($ DM!+$p+q**$DM **$DM̈́:{#**$ ~Hi **$!{#6!x#6!-$p+q*,$DM̈́!/$p+q*.$DM̈́DM̈́!1$p+q*0$DM *0$DM̈́!3$p+q*2$DM̈́!5$p+q*4$DM̈́!7$p+q$*6$ ~ *6$ >w! *6$ >w$*6$ DM*6$DM̈́!9$p+q*8$DM *8$DM̈́!;$p+q*:$DM̈́ !<$q!<$:$ʐ :<$2$_ *#Mt *R#Mt *"Mt !>$p+q*=$!DM̈́:{#!@$p+q*?$"DM̈́:{#!B$p+q*A$#!D$p+q*C$$!E$q!E$:\# :E$2\#_,0!J$s+p+q+p+q:J$=2J$^ *F$*H$ w*F$#"F$*H$#"H$7  !z#6:h#~ ͡ "j !h#6:g#Ҕ ͙ "j "͢ !}#6!"6l!K$q_ *K$&) N#Fͺ!N$r+s+q:{#2Q$:x#2R$_ :L$:Q$H !R$6 :R$2R$*L$& N! N#F> !L$~H:Q$H> !Q$/H^  ͨ:Q$=O!r N#F!R$6:R$ {  ͨ*R$&) N#Ft>M$H" *M$~A=Oͨ:ͨ!P$6> !P$ *P$&*M$>2O$ :P$ .ͨ*O$Mͨ!P$4¢ ͺ:Q$:Q$H:Q$H:Q$H :d#2z#D :R$>!R$~ HH> HD :d#2z#ͥ  m m ͥ !V#:"{ >!V#:"© !U#:"Ғ >!U#:"© !T#:"ҩ >>͙ %#-"( x"( :+#2+#%#! :{#2y# %#j :x# %# "͢ :{#:x#H!" " :{#L:x#D" L" !#6!g#6͡ :"2""! :{#u!h#6:$/:"HҊ!{#6:{#¯:x#§" ï" :"2r#:"2s#:"2t#:"2u#:"2v#:"2w#" 2{#"T#( !"6#6#6#6!"]#:g#ͬ !_#!"Y$>'")!"W$͙ :k#!l#we *W$$ DM" b" k" :a#Ҁ!@"Z# Ë!"Z# W$Y$;">'"W$Y$;"!@*"!a#W$Y$;""Z#!Z#"}O *W$$ DM" :{#" *Z#*W$"W$Ë:$ң !"W$ Y$W$;"ҝ"ͩ 2V$*##"#>'"G!#4!U$6:U$ր!V$ҁ*U$& :U$W$!$ 2V$!U$4L*W$"W$:V$ښ" "Ϳ " *W$$ W$_#;"+s#r{_$( N :a#!@"Z# !"Z# ͡ *X#"]#X#";">:'"X#";"!@*"!a#=X#";"!"Z#!Z#"}O *X#*"DM:"2W#"Ϳ :{#:{#n" :a#҇*x#&"*X#"X#!W#:":"րHҦ!"6" n /2k#:a#/!c#" "j !h#6!i#6*X#*"6*Z#*X#"X#![$q:[$ !"4>!$:$!":$1*[$&*S#M! ^#V*[$M̈́ø*[$&ø*[$&ø*[$&ø"_#;"ڄ *_#$ :[$w*_##"_#øg*[$&øAKYgu!\$q:\$ *\$M:$*\$M:"2]$!$:]$!$:]$2]$!]$:$w>!]$!]$5 :\$ (!"6!^$q:^$!$wF ͹O:^$0O͹!_$q:_$O):_$O)!`$6:$2$:$'2$:$'2$:$'2$*$MP*$MP*$MP:$¿:͹ ͹ ͹!a$q:$:a$ :n#9:a$ :a$H9:$2b$(:b$!b$6<:"<2"!b$(!"6 ͹>!$4k!n#6:a$ F!"6*a$M͹:a$ Z!n#6!c$q:c$a/>z!c$/H~:c$_2c$:c$!d$q:d$A/>Z!d$/Hҥ:d$ 2d$:d$!f$6*"M!N ^#Vͥ `"]#;" :e#/!b#!"X#]#@" *_#"X#*]#*"~2e$*]##"]#`5!f$62e$`2e$`̀2e$`"5E:f$ҕ:$Ҁ:o#<2o#2f$Ë:e$ 2f$:f$ҕN :$Ҥ:e$2e$:$ҳ*e$M[: $*e$M͂:e$>!":"=2"> >>!"!"5+N!~# ~2g$!"4ͩ2g$ >>!$;*$Mk8:$2"!$6:"<2"!"6g>!$c*$Mk\!$6!"6> :g$g:g$!h$q:"!h$wO!~# ~2i$—*h$&~# :g$w>!g$:i$¨!"4í!"6>2p#:$X#]#;"!i#:p#!o$62j$:j$::j$:o$" *j$M2j$2j$2l$:j$2k$2j$!l$w:l$D!o$6I!o$6: $!o$x:j$::j$Hu2j$T:*k$M*j$M:l$2m$"p$2n$:l$ʲ!l$52k$Ý" 2j$:j$0O> :j$0:j$AO>" :j$A 2j$OH!m$wO`i"">!$@ ͥ >!$N ͥ *_#}bO2 ͙ "j :{#" :y#:.#:$:{#Y:{#NH{͟O[2{#Ø:{#Yͺ"͢ ͺ:.#2.#:/#2/#%#V %#͢ %##( "0 :&#!r#2&#:'##2'#:(##2(#:)##2)#:-#2-#:.##2.#:/##2/#:0#20#%#V :$}͡ :"2"!"6"V :b#ڦ!$""K"!>1"""""$@""!>1"""""$ """_#;" !"X#:$/>X#H"H@>X#H"""!r$6>!r$@:r$"!*"~9:r$"!"X#!r$4:e#!f#2a#!i#6!b#6!l#6+6!s$6>!s$ڶ*s$&$ ~ʯ*s$&$ ~‘!a#6ï*s$&$ ~¯:e#!f#2b#!a#6!s$4b~:f#W:a#:i#:c#!i#*X#"_#:j#*X#"_# *_#"X#:k#!i# RG: $!$$5Ͱ5*p#M$:j#!c#G*_#"X#:e#QO͡ "  "ͩ 2{#n Hґ*""#:"2#!i#6:{#°*"#"">'"­!"4:{#*"!"">'"!"4" f:z#!"t$"x$͡ !h6\ !"v$:{#t$v$;"H6*v$#"v$͔ :{#]>x$H"R\ : $\ͺ*v$#"t$:{#_!#&#( &#"( f#!1#6!"6:/#/!$#: $>x$H"!{#6:{#Y:{#NH':$͟O[2{#!{#6Y*x$#"x$!g#6:{#Y! $#Aͺ!z$6> !z$e*z$&%# ~2{$ ^:z$ W.ͨ*{$Mͨ!z$4/:$p>͡ !"6?" :{#ʲ:{#_!# "( :"ڬ>͔ ~>!":R#!":%#HH :#<2#!}#> *#&~# N[2p# :p# H !}$p+q.*|$ 6 !p#6 #6:q#,T:q# A!p#6N:q#$N!p#6 ͒ )$*|$ 6,*|$ 6:"<*|$w*|$ :#w!~$6>!~$ڗ*~$&$ 6!~$4|!"6#6#6!q#6*p#Mc :q#ھ:p#*Ͳ ͒ 2p#ê:p#:¿:q#(*|$#~A<*|$wO>*p#Mc %:p#[ !#5.*|$ 6 ñ:q#1!$6#6> !$ڰ!$6:$<2$O>/:$!$O!J *$&*|$ H~G:$¡.*|$ :$w[œ !#5:$2$!$49:p#[¼ _ :q#!q#6+~. 2p#Oc  :q# :p#* Ͳ ͒ !q#6+~;= 2p#Oc = :q#$ *q#&$ *|$:p#w!q#4 :p#[H !#5.*|$ 6 *|$ 6å!$q!$6> !$ڏ *$&> :$ˆ >!$4l >:q#<2q#O*|$ :p#w:p#?± !d#6!$q!p#6?!$:q# ͒ û 2p#:p# :p#]H!:p#A2$O>!:p# !2p#!ͥ !:p#S:p#QHX!:#<2$2p#:p# HO!1!2p#Ü!2p#02$O> r!!$6Ü!2p#02$O> ڜ!*$&!*$& !$sr!*$&$ :$w:$!>!$ҿ!ͥ -*|$ :$w 2p#_og_{ozg_og^#V))) _{ozg^#V) "^#V|g}o "_{ozgO{ozgi`N#Fogo&og:Not set..$1|#S ---- Winchester Backup Utility ---- For TEAC MT-2ST/20S Tape streamer Version: $>????06>.6>06S Copyright (c) 1986, Jet Computer AB $͍*!RS Please set system date. $S B - Backup, make copy of winchester R - Restore winchester from tape C - Compare tape and winchester H - Display tape header T - Tension tape Q - Quit Choice : $> /!~(K#~ !G##~#b ^#VS  Bad selection ! $BRCT HaQS $!"S -------------------- Restore winchester from tape -------------------- $SThis will destroy all data on winchester ! Confirm with YES: $S $YœC !" h S Reading block no. from tape : $: S$* DK !WœK ͟* [ R * #" S$* DS Rewinding tape. $vœ:2SRestore done. $b S -------------------- Display tape header -------------------- $Yœh vœS Press to continue $ !"S -------------------- Compare winchester with tape -------------------- $C !" Yœh S Comparing block number : $: ŒS$* DK ! œK F! WK[ # x­* [ R5* #" u:2S Mismatch at block number : $* D/2SComparing block number : $* DùS$* DS Rewinding tape. $vœ:2SCompare done. $b !"S -------------------- Backup winchester to tape -------------------- $C !" Yœ! 6$  ͍SDate and time is : $ ͙S Enter tape label : $>' :( O !S Total number of blocks : $* D* !ut6666! 6/6.6-S Erasing tape.$͙œ! ͑œMœFœS At block number  : $: % S$* DK FK !W͑œ* [ RS * #"  S$* DS Writing end of data mark.$MœFœS Rewinding tape $vœ:2S Backup done. $b S ----------------------- Tension tape ----------------------- $Yœͦœͦœͦœ:2S Tape tension done. $2/! œ: ʧ vœSERROR: Bad backup format. $S Date and time of backup : $ ͙S Tape label : $ ͦS Number of blocks on backup : $*DS $:]>uœ2]( n/ !W~/W#~/_#~/g#~/o###~/G#~/OC S " reading from tape.$comparing tape and harddisk.$writing to tape.$!6 !~~ Y~ E~ S`_S $S $_:N"""SC~#$(_:(h***[K"""SC~#$(_:(û***[K~#;6| }????''0:86&oRR'nndn n R0x †> 606 iwSog"!Rد>N2*! :> <2^R #:<2õy2}2*R}!N#F#(H ~#6Sday $!(:N#F#(H ~#6S $: 8  y(0606:8 8  Sst$ Snd$ Srd$Sth$S, 19$: 8  y0606S $*##~#>:6~#>:6~????0606SunMonTuesWednesThursFriSaturJanuaryFebruaryMarchAprilMayJuneJulyAugust September October November Decemberx"C[*R"*[RK*[!SMÑ*[K!Sx"GCI*[R>F"K[IR55KK[G*x(E*[GKI"[*R|[[R(0C:]( 2]F͔K͔*"6>5:2S $(*SError on $͍͙S when $[ͦ/G!~#{(^#~ STAPE WARNING: $1 STAPE ERROR: ${SFATAL TAPE ERROR: $#ͦ:S Press to restart. $l >6S Tape undefined error, code : $x3:S Press to exit. $lS $2Tape attention.$ No tape in drive.$ Tape write protected.$Tape stall/jam.$+No BOT/EOT hole or clear leader on tape.$2Data block not found.$3End of media.$4Read error.$5Write error.$6Medium error.$F,Reading non-existent data in tape buffer.$GReading past filemark.$H3No blocks read from tape, before filemark found.$P&Illegal command sent to tape drive.$S(vo2]*h$CCCB[[R8 <ÉC2A!A J!^ !A~/w#!A~ ?6?P?? ?2?3 ? ~?V?N?F? f? ^?x!p,!^!,F|#é!,!^!,F|#é!,!^!,F|#é!,!^!,F|# !?,!^!,F|#S  FATAL ERROR in tape driver, cannot request auxiliary sense. $ :]O>G!:6#6#w!,!,F*[+""*"">2Z!W!|#G>2Zx!A~~>2]~/~/~/~/G:>H*"[[G"*"*"ͩ6>4!Br#p#q!@,*[+""*""!,F>2Z!!|#G>2Zx© !p6#6#6!n,!^!,F|#©:]~>I!,!^!,F|#©>2]!,!^!,F|#© :_/gS>6>:6S $!f+}  ~/# ) /G!~#(^#~SDISK ERROR : $#ͦS FATAL DISK ERROR - program aborted. $S Undefined disk error, code : $x3No index signal$No seek complete$Write fault$Drive not ready$No track 00$ID CRC error$Uncorrectable data error$ID address mark not found$Data address mark not found$Record not found$ Seek error$Data check in no retry mode$ECC error during verify$Interleave error$%Unformatted or Bad format om drive$Self test failed$ Invalid command$!Illegal block address$#Volume overflow$$Bad argument$%Invalid logical unit number$(Cartridge changed$,Error counter overflow$!:&!W!&F|#!@&!W!&F|#>2!zw#p#q!&*U+""!W""!&F>2T!W!|#G>2Txn!5V:;>2!z6#w#p#q!& *U+""!W""!&F>2T!!|#G>2Txn!+²:;.!&!W!&F|#n% !͒"p!! !͒"\$>!"͇">O O!" !͒"Ͱ!! !͒"\$>!"͇">O O!"> >x!""S" C" !͒">!"x" !͒"K"*" *" x9" !͒">""S" C"!"x" !͒"K"*"B*"B> >~G#N#2"C"S""""2 yb"[(ϋy8.(ϋӇӇ}ϋ}ϋp6&6,5,('##\$O( G  $'$C$8($# #\$ . $C$6&~&_(~'/_ \$OG~/#.N(!$g .F(!7$g \$/_\${w&(7{/(;ɀ3PUT 1$CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]WARNING: $OUTPUT~TO~FILE~CONSOLE~CONOUT:~AUXILIARY~AUXOUT:~END~CON:~AUX:~LIST~LST:~PRINTER~INPUT )15:?DIQVNOT~ECHO~RAW~FILTERED~SYSTEM~PROGRAM $[]=, ./;Error at the '^': $Error at end of line: $Invalid option or modifier$End of line expected$Invalid file specification$Invalid command$Invalid delimiter$File is Read Only$ (Y/N)? $PUT aborted$Enter Password: $Putting $list$console$ input to $ output to $file: $ Do you want another file$File already exists; Delete it$PUT completed for $printer$console$Requires CP/M 3.0$CP/M 3 PUT Version 3.0 $Put console output to a file$ Enter file: $1$1$n}0n|H 7/ң777G2*͵ !6 **& 6/[!&6:*!&ڋ*&& N *&& w:&<2&`!"':*2)".͉!&6*&& ~ :&<2&è!"'+~2)*&& ".!06!260Z:0:0H:0 Hғ!860Z:090Z:0N0Z:0a*.DM͉Ð:0:0H:0 Hҋ)Ð :0 :0 H:0 H@!86#6!,6+60Z:00Z:00Z:0*.DM͉:0 :0 H:0 H8)= :0:0H:0 H:2 r)0Z:0—0Zÿ:0¿!86#6#6!,6+60Z:00Z:0*.DM͉:0:0H:0 H) v!Hq*H&!Jp+q*I !Ms+p+q*K:Mw#6*K *K#"KN#Fy  !Op+q*N!Qp+q*P!Sp+q*R!Tq*T&-!Uq:U24!5641!Ws+q:V24!56*W&"641!Yp+q*X<m![p+q*Zm!\q!]6*]& >>*]& :\R:]!]4,!cr+s+p+q+p+q:2 t͙ !j6 *b~*b~2j*gM#22!n6:2 :nڳ*gM#22Þ :d21= :d212m*b~2k!n6*b~2j *b~Y *bN! *`*` =2l!mM !n6!e6:m!eJ :nC !e4, P *b6= *b:kw:1.r+s#r͙ :2ʃ *.#".È !26:j2oO*` ~2f*f&*^: !o4*b:ow*f&*^:g *o&*`~2fÚ *b6*.~2g͉ :f2h!d6*.#~2g!h4N*^ :3 !n6- *h&*^:g- !n6!d4N*. ~2g*d&*.~2g*gM#22:2> !2H҆ !d4N*. ~2g*gM#22U :d21.r#+s#r*.N#22!)´ *.#".Ù   !ss+q+p+q:s=2s *p:rw*p#"p !tq!}6*'"y"{2%:%( !%6(*)&*%&!ws*)&́!xs:ts :t:tH\ *.+".s :ts :1.͵++s#r͵ !u6:w!uڙ *y"{*%M !u4{ *xM :}Ұ *7ö =7:%A ͵ *tM! ^#VT7 o7 7 7 7 7 !~q!v6:~!vD *yN*y#"y!v4% ͵ !v6:~!vڃ *{.͸p !}6^u  *{#"{!v4L ͵ !p+q*DM772͵ :y:YH 7!q:a :{ : :.O 2:͵ ͵ 7@ !6>!څ 2 4 *&@ :w: = :H  :n :[  :=2O!@ 6  :~ !4 7:8 7ã 7:8´ 7ú 7!p+q0 ͵ &7*~ *~@O:!6> !,: .*&*~ %*&*N!4 ,">͵r*++"~[+"r7͆ *DMͻ -͇ Ͱ@͠:@ ʍ:b2b\͐"*}*|27H͇ \̀"*}*|2 : ͵ Ͱ\̀"Ͱ:@ :b2b\͐"Ͱ͆ \ͻ 8̈́:2 :2HF ,">͞u+"g7*DMͻ ͵ F͆ :8‰z7Ï7:2:2 H҈!60Z:0!60Z:0:0H :0<:!96!96:01:,!:61!:6:0M:H!:6M!:6:0i:d!;6i!;6:0…:Ҁ!;6Å!;6Ø!p+q*"<!\"><7"ͭ¼*<". .@l ->͵-*#".*~[ ͘-!p+q*~ *~ H'*#"*~3>>!`i^#V#~#fot2XywÉG:†xAa{m_ ʀ ʀt`i~•2F2G#~2H#~2I#~2N*| !\~=w4_P 12O'"&###~2M:G 9!!<1>27>2"> 2#!H:FH!I1>27>t2">2#2H*&.~@!"J<V<W^#V###*#*~~*&.~‡>28í.h"5~ʗ>286!:"o".~>286!N#F*#*#",^q#Vp"*#N#F*#"3^q#Vp"14!&L1 \\:8«X !86>_ 1/:~# y1p   %co %c WARNING: Cannot redirect from BIOS $ ERROR: Auxiliary device redirection not implemented $ ERROR: Insufficient Memory $ ERROR: You cannot PUT INPUT to a file when using GET or SUBMIT. $z K   %coSYSOUT $$$_ogDM!>))덑o|gҘ =†_{ozgi`N#Fogo&og~4PUT :ʜ4Y:O>52:[y<jbj%j:!F#fh!~}#$ 151282 COPYR '82 DRI ggggggggggggggggggggggggggggggggBD$H$$I! D $DA HH$@ H!@D! A ((;*************************************************** ;* * ;* sample random access program for cp/m 3 * ;* * ;*************************************************** org 100h ;base of tpa ; reboot equ 0000h ;system reboot bdos equ 0005h ;bdos entry point ; coninp equ 1 ;console input function conout equ 2 ;console output function pstring equ 9 ;print string until '$' rstring equ 10 ;read console buffer version equ 12 ;return version number openf equ 15 ;file open function closef equ 16 ;close function makef equ 22 ;make file function readr equ 33 ;read random writer equ 34 ;write random wrtrzf equ 40 ;write random zero fill parsef equ 152 ;parse function ; fcb equ 005ch ;default file control block ranrec equ fcb+33 ;random record positi<on ranovf equ fcb+35 ;high order (overflow) byte buff equ 0080h ;buffer address ; cr equ 0dh ;carriage return lf equ 0ah ;line feed ; ;*************************************************** ;* * ;* load SP, set-up file for random access * ;* * ;*************************************************** lxi sp,stack ; ; version 3.1? mvi c,version call bdos cpi 31h ;version 3.1 or better? jnc versok ; bad version, message and go back lxi d,badver call print jmp reboot ; versok: ; correct version for random access mvi c,openf ;open default fcb rdname: lda fcb+1 cpi ' ' jnz opfile lxi d,entmsg call print call parse jmp versok opfile: lxi d,fcb call bdos inr a ;err 255 becomes zero  jnz ready ; ; cannot open file, so create it mvi c,makef lxi d,fcb call bdos inr a ;err 255 becomes zero jnz ready ; ; cannot create file, directory full lxi d,nospace call print jmp reboot ;back to ccp ; ;*************************************************** ;* * ;* loop back to "ready" after each command * ;* * ;*************************************************** ; ready: ; file is ready for processing ; call readcom ;read next command shld ranrec ;store input record# lxi h,ranovf mov m,c ;set ranrec high byte cpi 'Q' ;quit? jnz notq ; ; quit processing, close file mvi c,closef lxi d,fcb call bdos inr a ;err 255 becomes 0 jz error ;error message, retry jmp reboot ;back to ccp ; ;*************************************************** ;* * ;* end of quit command, process write * ;* * ;*************************************************** notq: ; not the quit command, random write? cpi 'W' jnz notw ; ; this is a random write, fill buffer until cr lxi d,datmsg call print ;data prompt mvi c,127 ;up to 127 characters lxi h,buff ;destination rloop: ;read next character to buff push b ;save counter push h ;next destination call getchr ;character to a pop h ;restore counter pop b ;restore next to fill cpi cr ;end of line? jz erloop ; not end, store character  mov m,a inx h ;next to fill dcr c ;counter goes down jnz rloop ;end of buffer? erloop: ; end of read loop, store 00 mvi m,0 ; ; write the record to selected record number mvi c,writer lxi d,fcb call bdos ora a ;error code zero? jnz error ;message if not jmp ready ;for another record ; ; ;******************************************************** ;* * ;* end of write command, process write random zero fill * ;* * ;******************************************************** notw: ; not the quit command, random write zero fill? cpi 'F' jnz notf ; ; this is a random write, fill buffer until cr lxi d,datmsg call print ;data prompt mvi c,127 ;up to 127 characters lxi h,buff ;destination rloop1: ;read next character to buff push b ;save counter push h ;next destination call getchr ;character to a pop h ;restore counter pop b ;restore next to fill cpi cr ;end of line? jz erloop1 ; not end, store character mov m,a inx h ;next to fill dcr c ;counter goes down jnz rloop1 ;end of buffer? erloop1: ; end of read loop, store 00 mvi m,0 ; ; write the record to selected record number mvi c,wrtrzf lxi d,fcb call bdos ora a ;error code zero? jnz error ;message if not jmp ready ;for another record ; ;*************************************************** ;* * ;* end of write commands, process read =* ;* * ;*************************************************** notf: ; not a write command, read record? cpi 'R' jnz error ;skip if not ; ; read random record mvi c,readr lxi d,fcb call bdos ora a ;return code 00? jnz error ; ; read was successful, write to console call crlf ;new line mvi c,128 ;max 128 characters lxi h,buff ;next to get wloop: mov a,m ;next character inx h ;next to get ani 7fh ;mask parity jz ready ;for another command if 00 push b ;save counter push h ;save next to get cpi ' ' ;graphic? cnc putchr ;skip output if not pop h pop b dcr c ;count=count-1 jnz wloop jmp ready ; ;*************************************************** ;* * ;* end of read command, all errors end-up here * ;* * ;*************************************************** ; error: lxi d,errmsg call print jmp ready ; ;*************************************************** ;* * ;* utility subroutines for console i/o * ;* * ;*************************************************** getchr: ;read next console character to a mvi c,coninp call bdos ret ; putchr: ;write character from a to console mvi c,conout mov e,a ;character to send call bdos ;send character ret ; crlf: ;send carriage return line feed mvi a,cr ;carriage return call putchr mvi a,lf ;line feed call putchr ret ; parse: ;read and parse filespec lxi d,conbuf mvi c,rstring call bdos lxi d,pfncb mvi c,parsef call bdos ret ; print: ;print the buffer addressed by de until $ push d call crlf pop d ;new line mvi c,pstring call bdos ;print the string ret ; readcom: ;read the next command line to the conbuf lxi d,prompt call print ;command? mvi c,rstring lxi d,conbuf call bdos ;read command line ; command line is present, scan it mvi c,0 ;start with 00 lxi h,0 ; 0000 lxi d,conlin;command line readc: ldax d ;next command character inx d ;to next command position ora a ;cannot be end of command rz ; not zero, numeric? sui '0' cpi 10 ;carry if numeric jnc endrd ; add-in next digit push psw mov a,c ;value = ahl dad h adc a ;*2 push a ;save value * 2 push h dad h ;*4 adc a dad h ;*8 adc a pop b ;*2 + *8 = *10 dad b pop b adc b pop b ;+digit mov c,b mvi b,0 dad b aci 0 mov c,a jnc readc jmp readcom endrd: ; end of read, restore value in a adi '0' ;command cpi 'a' ;translate case? rc ; lower case, mask lower case bits ani 101$1111b ret ;return with value in chl ; ;*************************************************** ;* * ;* string data area for console messages * ;* * ;*************************************************** badver: db 'sorry, you need cp/m version 3$' nospace: db 'no directory space$' datmsg: db 'type data: $' errmsg: db 'error, try again.$' prompt: db 'next command? $' entmsg: db 'enter filename: $' ; ;*************************************************** ;* * ;* fixed and variable data area * ;* * ;*************************************************** conbuf: db conlen ;length of console buffer consiz: ds 1 ;resulting size after read conlin: ds 32 ;length 32 buffer conlen equ $-consiz ; pfncb: dw conlin dw fcb ; ds 32 ;16 level stack stack: end =1 üCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl] ERROR: Not renamed, $ ERROR: Drive read only.$Invalid wildcard.$ERROR: No such file to rename.$ Disk I/O.$Currently Opened.$Bad password.$file already exists$Enter password: $, delete (Y/N)?$ERROR: Invalid File. $Requires CP/M 3.0$Enter New Name: $ ERROR: Incorrect file specification. $Enter Old Name: $1 1 q"6 *6 }0*6 |H\7!" !\" " ͫ  " B ̈́ ùn7(G29 >!9 E7!6 *9 & ": )7*: DM(G29 )*: 6 *: #": *: 6=:9 : 2 #+s#r*: 6 !" !\" "  " B ʹ̈́  N o :\: ! :\o * ~2 J  . v! q* &! p+q*  ! s+p+q* : w*  * #" ~  ! p+q* ! p+q* ! p+q* ! p+q* ! q* &-! q: 2 ! 6 1! q: 2 ! 6 1! r+s+q: 2 ! 6* #s#r 1 ' '! s+q+p+q: =2 ^* : w* #" A! q: y7: 7: ¥7: ³7: 7: 7: 7: 7! p+q! 6> ! -: .'* &* >O'! 4! p+q.* * DM -E ͳ* DMͣ" * }‹* |2 : ҇* M_: >! q: aڨ: {Ҩ: : )#7  4! 6>! CO͎2 * & : w: )C: õ: ): õ: =2 O! 6 : 9: <2 h2 ! 6+6> ! ڠ* & ~?–* &* ~?ʑ77Ö! 6: <2 R: ! p+q* : w!! 6> !! *! & ~?*! &* *! &*  w:! <2! ¶ͳ z2# _:# M :# o&"$ E"& G"( I"* ", ". "0 *$ DMͤ*$ DM.2" Ÿ* DMN 47O͎Yœ* DM͓*$ DM.2" ß:" ½*$ DMN ͬ*$ DM.2" :" *$ DMN )* DM='*$ DMͳ*& E*( G** I*, *. *0 !(  Y D .*(  -< ͊2# !3 p+q7*2 DM '*" M_7D7* #" ! "  " .  -¢ !5 p+q*4 ~ *4 ~ H *4 #"4 ñ *4 ~ >>!`i^#V#~#fo"  yˆ w7 G:4 xAڈ ҈ a{ _È  . . " _og_{ozgi`N#Fog_{_z#W>Yl]$Nwy!"(9"f1f! Ҕ2! ~#foCOPYRIGHT (C) 1982, DIGITAL RESEARCH 151282KK{<<ʽ<K : >! ~6 69BK! OS}!,"**NK6 :+OK2$^#V#N#FxNp:$p:Gjxj Y# A>QFQx>QGQx3ڰbڼqҼo5p5"""*!yb! ~G*!NKկ2!*$K*"x!*!@$@hK\K:K ~#~ w*NK*NK^#V#N#F!",!."*K6*}ʴ}<ʴ.}o|g "($Kt>=2(*f*(}DɯQ"(>QKQKQ>Q"%Q!2*%DM**ѵ+)) H~#+}#<:<ʲ<77:<ʢ2~77ø~7"9:OG#Q{ozg# ""BBÃà à ÃÃ1j$|@ "H$UUT$$ $I D$BA@! B$$A IA $!"  @$@$BI!!@""$DA  $I$@!è COPYRIGHT (C) 1980 DIGITAL RESEARCH @: 5@%Yl]15252'5h+U"!""*"5j"2u3>2v3*5"3-ͩ-:5Z!""$"5"5"5"5"5" " 522>2 5:4 b:4$M:(5-C+C*M:(5!,5M[!35PMp%M(ʡͣ#v#ƒ$:5}% }!"&:5ʦ>%*#5}| V AX*|:5(#$*#5"A*#5"&#v#% RØV AR*&*R"A*5"%5!4NA#~ͫ% p"5*5N"%5!4q#͢%w 3:4(x *#5:,5o"#5V%2*5Ô; !:V :4:4{%͉"">2!:4:424*o,kÊo:4:4{,ʊ:k*%5#!(5~́ w23@:2(4y""3"323>2v3 :u3L!P46+(0>24:u3:v3"U24͋$͇%ͩ$!5*}*#5":4:4: =X!^#fk:Vj&AW y ~   8 ; C :4:4=G!4F#I ,*5͘EIr,o͉n2"5~2 r,Yo :K4 ͉:K4 " : 52> 2K4::4M:4 Mg %U!P46+:v3Ϳ$ý*3*3"3Ϳ$"3½:v3*3^#V{ʽr+s*3^#V ʽ-:v3:r+s!46#w4> 24͋$í!94~6!(5~6"3~,_#!4w͋$ÏV *3o6͋$*3~6 Þ*3:4,"3~ š62:4*3s#r2(5294*3#"%5͇%ͩ$@*3"5":(42:32(5Ģ >24*3"32(5 ͉r!Q4wM>=n2*5~2%! 5%~2͉:K4 v }>v S M:5p*#5*gu>%"u> %2 :5O%:4©:5[%! 4:4©:4,ʀ>:5: O%% 2)5:4:4 !*%5"-5>2'5*%5"&:4:4(:)5N:5N:4=N N*&"%52)ͫ%:(5ī%x;c!'54!'55:)5ž!":*5ʍ!5%Ù*5%*#5":5*%5~ *%56 ͫ%<͉:K4 "5~2o M%(>@%>#*55%!".!/5",:4M:'5M*,~#T :5T !4N*5*,s#r+"%5yP  ͫ%> ͫ%%g >v % 222:4¦ :4 – ì !ʬ ¦ À :4:4€ ( :4 :4:€ :4€ (€ € x !4À  :€ :>S %2 !~5€ :%j B !4À € !~5€ úG!~4_!p!~5^!~>À >2)5:4 *5" +"%5:4ڥ >ͫ%ͫ%[%:4 :4, V :4  + !4N#~ͫ% > ͫ%ͫ%*5"#5:)5- :)5%͉}*5" +"%5ͫ%ͫ%*5"#5>@:2(4:(5 H 23y"*5"3*%5! {#zt ~+"%5*5+"5wT #"5*5"3:)5ʑ N]T s#r+*#5* {_zW"3:)52v3 > > >2 5n2"5 %: 5*#5* 5"#5*55%"#5:5KBn2: 5O0!*", ++ *5:K4 0@:5Ĩ/ú>2) :u3ʭ :4­ *5+"%5[%2!<24*$#"$""*:40!??"4͋$"5+"%5͇%ͩ$+:4­ :4,J "*} :*5 :5%:4 +:25Ĩ/:4 :4  @>S+ >2):4„ ͣ#v#: :5$:)%k %G I k :)%:)c %k %+:4„ :4, " :4 :4/ :4 :5 $*#5^#V*S"s#r*5*#5s#r+"5 |#v#*#5" 5:4 :4/ !"5:5> %AB,#*#5 :4:4 !;*M_!Q^#fkox Iͻ8ʗy0IͻGͰͻHIͻ(yIͰͻͻy0ͻIH'd ! ^#V#*"0}o|gF 9"":!`x=`y0l2!!4^4!4q/:4:4,; *5͉: 5ª|}$ªo͕Ͱ8Oͻy0H͕H͉: 5në:4:4,>C0:4M:4  ;C:4#:4 ! #! #{ozgBB**}j!]~ } #ymy>2(>2v3͖*5|EB"#5>%0,# ^#VÕJB*50MB*50!".*5} "#5^#V"5*.s#r+".*."5:u32'5!5~4P!"*|"#5>%*5%"".o!P46 !L4*>2(>2v3͖>2(>2v3͖NB:O* 0:+5ʘ0*5*!5S*5*!5S\gr!P4w#þH USE FACTOR !M4** "5A1z{*5~2*"#5v#!":5(%! 5%n25%%%>%n2G:5x:L4 o:x_*5#"5:5ʽ*5|ʉIB0>%%O%O: 5%*55%ý:5ʽ: 5O*5*5ESS͎2O=>O͎2N=#y{#* 5* 5 "#5" 5͎21͎2=HÎ2Î20:G!^4!K4wOOn2!6z_{_4A_A?*!5"#5*#5*5{z*/5+"%5**+"%5% V%=͇%͢%*%5#þ!v3ʲ:(O! ^#V4@B%GFB>%%O0*#5##~<##ò*#5"|3#"%5͇%:15^:4^!4~?^#ʲ:4͆!~3"z3^#V"#5}ʝ##~2v32w322(!~38w# ͖!~3"z3>2y3*z3^#V#"z3"#5*#5}ʩ##~<2x3G*#5###"%5:w37> ͺ!w3~w7>w> ͺ:w3Pd!5^!K4~ B!~624(02w3%!>%|_}_> ͺ!w3~w:x3ʜ=͢%ͺ!w34È*#5^#V"#5!y35:24(0!^4!K4w>R0>V0>D>P>L>O>B>S>N0!u~ڇK6N4!E s#r!U :mw* 5!] s#r!t~ ڹ6K^4!1w!;p!u~K!5N!E ~#fo!U ~2n!] ^#V"pK2oo&) ^#fkN]ivKzV{K>ɯo>g"!6ů{_zW5>)D*OxGғ !?uDM!xGyOڱò)â͝ddJ)=J|g}o=2o2o*p"rOxKxGyKxGy0KG*p*r}|K\\z{W¢Ü}|ڜâWʜllyWœâ!!#Qzg{ozg{ozg{ol&:oO:n2m*p" 52n2ox:4:4 ;!,ɯ2t2u2 52o=20!"5" 52m{!t~Q5_!1~9:uK:K4 *E"5:U2 5*]" 5*v"#5:K4 $:4§:4KK!4^#=ʣV²*4(—ҌV :4:4V !!*/O:0K>20y_j:t:_!;~:!ts!1~y_!t~X=w_!1~[Kdͪ>20$y$zU0!%2m*#5"v:mP>U0%4>%:m!>2m*202m!" 5/:0Kx*#5DM*5" 5}|^#V<>E0:u3ʛ*3~Œ:v3ʁ!\4>A!(0":3]#"3,ž"3Þ-2\  :4x_<24!K4w:94͜:94ɯ2:4284]294:4:94K)2:4;4~#!͜,!:4~*4!;4_:94w]294ɯ<*#5"W͉#4#*W"#5ɯ2[![4Y5!!:46"3!:4~q5!84^4!;4~â:u3:94†G³]âʻ^¨^·:94&·!:44#wó&G294xâG:94&:4G/G&ʷ/&ʷG/G!94~&>623y"!v36*5"3$"32:4*W"#5GJ2:42942(524> 2S(0>24ɯ242T!4~@`65!^4#:(5O:4yD(w~$w:(50 |:(5D(A:(5?ʱ@ʱD(Aɷ͙| ;!Cͻ2(5:'5:)5:5:(5ͫ%:(5 !J24:(5 ʞ;{>24:'5ʋ:)5.:5‹;Ž*-5*%5++{Iz]~ T++]!]+?"%5:'52'5hͫ%2'5ä:(5*—:S —ʤË ¤24͙ʳ>|ʾ>:(5'2(5> :u3>+2P4(0!K46 >24>24:(52SR:4Z:'5:4=!EQM<8!LE:(5=I!NE>I!LTM>!GT:(5=M!GE2(5"4!44>24!(5:4ruͳ u͇:(5D(OʓQ˜>ßH©>2T2(5:SD(B¹>D> !452T!"4!4N#~#A07O!T/!~*4! ) "4 :(5 5!'':(5 :(5,;%:(5 !:(5; ,J242Z$ l ` / ‰ >24#!:(52S:4; ¡ :4/!:Z/!)!:4 :(5'#!R:(5'z 24É :(5' >24#!^ :(5 #! #!;!)!<!!Z~4z ?#!>!!Z~#!5z #!:Z#!G )!Rz >24>VG!>OG!>IG!>BG!0!P!w#w#["!"#5!U3w#w#p"!u3~#4^!v3~w!3ͷ"!3ͷ"!3ͷ"!3~w!3ͷ"!4~w!(4~wN#Fp+q!u3~#^!v3"!3#!3#!3#!3"!3#!4"!(4"5~wN#Fq#p>B0!4"%*%F# #2P"*#5##~G=#w#6#w]$*5!4n& {ozg"#5!5{#z$"5f$*5!4N#yʦ$ ~Ù$f$!U3"Q"/$:P"%*5!3{#z"#5%_!U3*#5~#~&%~#$"5ÿ$&%!%*A1SYMBOL TABLE OVERFLOW *#5###w*#5###~,#*#5_####&%s#r&%^#V&%##"%5F%wF%~#!4~l%6~=ͫ%ͫ%!4N#~ͫ% y%͢%͢%2P"*ÿ*:?*ÿ*:@*ÿ*~x/~# *> x/\ ?-$-w#+!\64 #+>GO#w %+>O # <+6 2+6L#6I#6B#w2|*\+>2*5!"B*!(5~2A*w͹*!1*>826*27*!"/5*"5!5"h*"*"*#"5"!5\, _#~ͨ+ ¶+:;*Aͨ+>:ͨ+Ͷ+>.ͨ+Ͷ+>-ͨ+*!1+!32*!1+:=* D,> D,:D*6,_!D* W,6 4ɯ2D*2*522521528*:\ -2;*2@*O:\ʋ,=Ì,y!<*w#w#w#w#>2+52,5:m$>-!~#$ª,~>-# ʱ,<*A-P-S-R-L-*,+,-,-+5~S-M-25L-15Q-8*1,-x#ñ,~A,-#ñ,#6 !1*!*!E**e !N*+-!j**%,r-6* ,,:=*ʂ-:>*…-2:?*ʨ-!***ѯ2:*29* ,,!3*60#60#60#>235!"*:5ͨ/-!"f*2Q*2e**E*+!1*z{:*5G.*B*-.!"B**\..*B*#"B*+~¤.:u32*5G.*\!F2+*f*-•.*!"f**h*ʹ*E*€.a.Ò.Ҫ.ʒ.6# ‹.͹**h**f*#"f*~!2*G:=*..xx/.x.1,..****w#"*!-*!"***j*!*-/~5/ʹ*9//͹*!2*1L/****w#"*!-*!"****/_!5*~ ͳ.27**/5}!1~ /ͳ.#/> ͳ.>#ͳ.ͅ/> ͳ.*/5~/ͳ.#/> ͳ.> ͳ.> ó.}26*!7*è/Oͳ.:K4 :5:=*yx/:8*!5I0:25!*5—0~0:K4 0!K4~ —0:350:P4+—0:,50ʗ0:Q4#0:L4 0:,5=ʗ0!K4~ ʇ0!4s!7*~!6*Ԩ/4:4!K4ʺ0G~ 0#x=ë0> 0> 024!K4>x6 #=0G!K4~ p%,**}0>ͳ.0*j*+:+5ʨ/0!s*6S#6Y#6M#w!*w:>*2=*!"*%,ʨ/26**j*կ ,,0:?*1::*Z1ͬ2L1͎2**}1}w1>B/a1}|Gd/:?*ʓ1**+![2*CP/M RMAC ASSEM 1.1 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR INVALID PARAMETER: SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES UNBALANCED MACRO LIB END OF ASSEMBLY : 5O!5 ~#fo: 5O!5 s#r:?*yʟ2š2ͬ2Ž2G:9*29*!:*4>6:9*L/29*2%#333/3 3333#332E3 3   MXList WAITING FOR PRINTER $PRINTER READY $?ɀSAVE SAVE y<1!~ʋ;:* ͩ".~>2`*.h~`>26!*#~2#~2r+s-* 1!~ʀ#_6|ʉ#6?#6 #6$\<8Y‰\>!|w\:V"8: V "**Ͳ\h}}€!*:2\<T}Q**#s#r>2:Ÿ*.h6 1>2::>2}2|2!"  !!\( yŽw=G::xAڎҎa{!_Î 4 4(!~> L5*~#"a_:f7ñ8 ʱ0vñ@7ñ҇0ÒGڐ7ñ7o:O& ʦ))))ÛzW{_f: CP/M 3 SAVE - Version 3.0$ Enter file (type RETURN to exit): $ Delete $ Beginning hex address $ Ending hex address $ $ ERROR: Bad close.$ ERROR: No directory space.$ ERROR: No disk space.$@$ $H I$I!$HI"$$"$ I ! A  !B B@@ $ABH$!"D$"B title 'System Control Block Definition for CP/M3 BIOS' public @civec, @covec, @aivec, @aovec, @lovec, @bnkbf public @ConMd, @QueFl, @crdma, @crdsk, @vinfo, @resel, @fx, @usrcd public @mltio, @ermde, @erdsk, @media, @bflgs public @date, @hour, @min, @sec, ?erjmp, @mxtpa scb$base equ 0FE00H ; Base of the SCB @CIVEC equ scb$base+22h ; Console Input Redirection ; Vector (word, r/w) @COVEC equ scb$base+24h ; Console Output Redirection ; Vector (word, r/w) @AIVEC equ scb$base+26h ; Auxiliary Input Redirection ; Vector (word, r/w) @AOVEC equ scb$base+28h ; Auxiliary Output Redirection ; Vector (word, r/w) @LOVEC equ scb$base+2Ah ; List Output Redirection ; Vector (word, r/w) @CONMD equ scb$base+33h ; Console Mode Byte ; (byte, r/o) @BNKBF equ scb$base+35h  ; Address of 128 Byte Buffer ; for Banked BIOS (word, r/o) @QueFl equ scb$base+39h ; Flag for BDOS requests to BIOS ; Bit 7&6 used (byte, r/o) @CRDMA equ scb$base+3Ch ; Current DMA Address ; (word, r/o) @CRDSK equ scb$base+3Eh ; Current Disk (byte, r/o) @VINFO equ scb$base+3Fh ; BDOS Variable "INFO" ; (word, r/o) @RESEL equ scb$base+41h ; FCB Flag (byte, r/o) @FX equ scb$base+43h ; BDOS Function for Error ; Messages (byte, r/o) @USRCD equ scb$base+44h ; Current User Code (byte, r/o) @MLTIO equ scb$base+4Ah ; Current Multi-Sector Count ; (byte,r/w) @ERMDE equ scb$base+4Bh ; BDOS Error Mode (byte, r/o) @ERDSK equ scb$base+51h ; BDOS Error Disk (byte,r/o) @MEDIA equ scb$base+54h ; Set by BIOS to indicate ; open door (byte,r/w) @BFLGS equ scb$base+57h ; BDOS Message Size Flag (byte,r/@o) @DATE equ scb$base+58h ; Date in Days Since 1 Jan 78 ; (word, r/w) @HOUR equ scb$base+5Ah ; Hour in BCD (byte, r/w) @MIN equ scb$base+5Bh ; Minute in BCD (byte, r/w) @SEC equ scb$base+5Ch ; Second in BCD (byte, r/w) ?ERJMP equ scb$base+5Fh ; BDOS Error Message Jump ; (word, r/w) @MXTPA equ scb$base+62h ; Top of User TPA ; (address at 6,7)(word, r/o) end \`d4dT8 =Y@AIVECSՑPddT8 9- @CONMDUQQ d5$D IM.@VINFOTS 4eUMI @MLTIOTQ`dU$E45%@BFLGSPU`TU(5%:@SECTT dՅE@q%&G  J*p "2b:p !'%#GJ*p !&G ?z*p !"&"\qc" "*"\q/ "&"2qk$'G bz*qS &$jJtq+ &*$j¢ p (&G**dqs )?$p +$#'@SECTT dՅE@q%&G  J*p "2b:p !'%#GJ*p !&G ?zɀ"#DIRLBL 1!M CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]!`i^#V#~#foͽ{¡y#wG:xA##6?)@w){#{s333333.;;33,;;#wD{_#6 sO O ڹ.:;=,/[]<>a{Ҷ_#  ý Copyright (c) 1982 Digital Research File not found or no directory spaceInvalid file name.Directory Label attribute set Read Only (RO)Read Write (RW), set to ERROR: READWRITEDELETENONE on off LABEL @ @Option requires a file referenceOption only for@ drives.Assign passwords to input files.Assign a password to this file.Directory needs to be re-formatted for time/date stamps. Please see INITDIR.Protection not enabled for disk.Unrecognized option.There are no modifiers for this option.Modifier missing or unrecognizable.Not a valid modifier for this option.This option needs a modifier.Only first 8 characters of default password used.Only first 11 characters of label name used.Only first 8 characters of password used.Cannot have both create and access time stamps.Cannot set both sys and dir.Cannot set RO and RW.No options specified.Page and nopage option selected. Nopage in effect.Cannot set local options for file.Protection modifier is only ON/OFF for drives.Password protection is not supported in NON-BANKED SYS.Requires CP/M 3 or higher.ACCESS0ARCHIVE0CREATE0DEFAULT0DIR0F10F20F30F40NAME0PASSWORD0PROTECT0RO0RW0SYS0UPDATE0PAGE0NOPAGE"%(+.3%\|"()/#!@&+-*??Directory Passwds Stamp Stamp Stamp Label Reqd Create Access Update -------------- ------- ------- ------- ------- Press RETURN to continue. ?Password ? Disk I/ODrive Invalid Drive.Wrong Password? in filespec.?ONOFFsystem (SYS)directory (DIR), Drive Default password = Password = Label for drive Protection = or protection not enabled for disk.Modifier: Option: FILE: 1!1!1 ""*"}2W#|2X#̀ 2"!"6:W#0w n ͎ 2!ͽ l 2"*U#& ~ œ !U#4Æ *U#& ""*U#& ~[ *"#""B!:" o ! !!6 S :" *"""B Q͟ 9 :"!"" g͟ !!6= :"1 !!6= :"= !!6]B |M !"6 :"k *"""!"6o P &͟ v!!q*!& y !!p+q*!~ʯ *!Ny *!#"!Õ   y  y ͹ :! !"4~<<+~H ͹ ͹ 0 ͏ Ͱ  2!:! !"6͹ ͹ !!p+q *!DM͏  !!q*!&!!p+q*!!!p+q*! !!q*!&-!!p+q"u *!"!!!p+q"u *!d!!q*!&e!!p+q"u *!f!!p+q"u *!g!!q*!&) ^#V%!!p+q*!! #q: #2"!"6"1!#r+s+q:#2"!"6*##s#r"1!"6#6"1x >"9!® *"DM͏ ö *"DM͏ J ͏  "̀"##1! ͑ >#9!*#~[ !"6 *#~] !"6*##"#!"6*#!#s+q+p+q:#=2#J*#:#w*##"#-!#s+p+q+p+q:#=2#ʁ*#*# w*##"#*##"#Z: 2#aڛ:#{қ:# :#!#p+qx *#DM͏ M  " !#6>!#?͂2 # *#&" : #w: # ?: #ý: #-:#ý:#=2#O!" 6 : #8 !#4Ͱ 2 #:"AOy :y F!!#6> !!#ڋ:!# s.y *!#&*!>Oy !!#4]x *"|2"#x F͉ :"#¸Y ͏ :"#b ͏ M͏ :"#M͏ :"#i ͏ :"#x ͏ :"#  ͏ !##q&"u  S 2##!$#q:$#>:$#o&&""!:\w!"6!"6&"u *#EZ *#GZ *#IZ *#Z * #Z * #Z "*#DMKc 2%#¡>*%#M>!'#q=͏ :'# ͏  ͏ p͏  Z ͏  ͏  ͏  ZM͏ W͏ ]͏  y  Z!Ay Z/1y Z=2y ZK3y ZY4y !(#q*(#&*!~q>>:"ڒ:"ڒ&"u \S O!)#q:)# ¨ͅ 2*#ò*"M 2*#:*#  F͉ p͏ :)# M͏ W͏ ]͏ :"*"M 2+#!"6>!+#Ia:,#o&&""! >w*! ~ F*! ~F!"6[!\"!]K!"6&"u S 2,#:,#ʗ:,#`O!&" ~ Žc 2,#p U͉ ͉ :"!"6*! !K!"6+6! ""}*"|͌͘͟:!2"!"6:" ͟" *"*""K"j  ! "6"͏ :"b:"Tͥ͟:"2"p *! >w " :"‰!"6!"6*"*" "K:"ҥ:"Ҹ͟!"6*!#  >!"3!-#6:"=!-#"*-#&*"~.*"*!#DM*-#K:-#"!# *! DMK!-#4*"*!#DM*"K!0#s+q+q:"G:"Z!"6͟*.#&" ~z *! :/#wÆ *! :0#w:"ͥ:"21#¤!"6:1#´!"6@:1#!"6 !"6 " :":"2"!:"͟:"21#O>͟ 4*!  !3#s+q:"0:"C!"6͟*2#&" ~b*3#&*!>wp*3#&*!>w!"6 ͏ !"6 "͏   F  U *! >µ͏ û͏  *! >@@25#*! >͏ ͏ :5#͏ ͏  *! > ͏ ͏  *! ~1 v ͏ :"K͏ Ô:"@@^͏ Ô:" q͏ Ô:"/: " HҎ͏ Ô͏ :"Ҥm͏ v!6#q*"|. :6#͘, ͷ:" :6#*!DMͧ "" :6#*!DM "" ! ""*"|.͌:6#(, +͘>>*!DMͧ ""*"}t*"|kͥX*"|h͌͘t͘͟*"}ʘ *! *! ~ژ͘*!DM ""*"}*"|ͥ*"|͌, J͈͟>!"(:"(:"(A:" :" ͟"*͘͟!"6:"?:"?:"2":"2!! ""*"}Š*"|}ͥj*"|z͌͘Ê͟  :"¦:!2!!2 o&""͘2:!:!=2"*"MC ͽ !7#6> !7#*7#&\ ~?>!7#4>ͭ! \K!"K:] :e HY!"6&"u \S 28#O!\"!͘͟ *8#M^!"6!:#s+q*9#&)))A *:#& ~!;#q!<#6*<#&u :s—>*<#&u :;#«:<#!<#4Ä!@#r+s+p+q!G#6:H#:H#2G#*D#M{2"!L#6:"=:L# *D#M{2":A#2"}>:A#2"2K#:H#2I#!L#6:H#2G#:H#Dß*H#& *?#*H#&*?#=2J#!K#–!L#6!B#6:K#!B#ړ=:L#ڌ0!B#4uÙ0}>:""!+s#r:"*"#"":2":I#:G#2M#O*?# ~2C#*C#&*=#:s!M#4~2H#*C#&*=#:D#*M#&*?#~2C#!H#6*"~2D#:C#2E#!A#6*"#~2D#!E#4N*=# :tW!L#6m*E#&*=#:D#m!L#6!A#4N*" ~2D#*A#&*"~2D#*D#M{2":":"H:"H:"H!A#4N*" ~2D#*D#M{2"Õ:A#2""!#+s#r*"N{2"!*"#"":""9!+"O#!N#6:"!N#A*O#Ny *O##"O#!N#4"!"6!"6!"6:"Z!:"e!:"p:ͳ2"„"!:":"#H!:":"=o&)))A ~ھ+:"=o&)))A  ~ lNͳ2"4:"=o&)))A *"& ~=*"""!"6#6!Q#6:"=*"N{2"*"#""!Q#4!:"X*"N{2"*"#""!Q#5>:"=Œ*""":Q#2"O>҉e͟!"6:"= ¶*""":Q#2"O> ҳ!"6 ͟*""":Q#2"O>͟!"6:":"=o&)))A ~HF:"=O!" 6>!":"=:"=O!" HqQ͟X͟X͟O!͟OG͟X/  ^:  Q:"s ":"ҁ":"ҏ":"ҝ":"ҫ":"ҵ͝:"ҿ?:"͇:":"!":"!":"͟͟ P:"):"!"64@4:"P:"F!"6@44:"!"t:"h͟͟ Ø:"҅ "Ø:"Ҙ!"6 ":"ҩ 4:"!";͟  :":"!"6  " ͓ :" :" !"6  "  ͓EB "#GB "#IB "#B "#B " #B " #2"O ! "K!T#p+q*S#""""!!"" ""*"DMS :"Ҙ ͟!!6C  !͏ >"9!ʬ !"6ñ !"6!\K9 :"!:"  e͗ :" ͙ :" 1:" ͗ :"!!"6!?!!"6 _ogi`N#Fogo&ogDIRLBL yd'* !9"1>"#2#:Og}**Ip2~w2i#1#":RͶ :O~!ʫ:<2Ž:"2"x2*# O:ļ:<:G>O*# :<t tIw!/>!/>!*6 #:_#:*Y" Y" Y" >*Y"#####Y"##Y"Y"Yz2*Kg"ɯ22!"*DM6:O* 2~ ~ †:<~:2>2:<** "_?:<2>!/:<}:2* ~b W6 y2> # vwm>2>!/ N *~O²+—">2>!/*:< "~G # p *~w#  : *8*:*8yO:O*}O= ~ w#P^#V#ɷ{ozg |g}oh:<͉̉O<OBKBK$'-*!*^#V"DD  $$HD@" @@ $B $$H$H$HH$$! HD$D$D@AD HD$!A" A1CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]TEMPORARY~ORDER~PAGE~DISPLAY~NO~COM~SUB~NOPAGE~NODISPLAY~ON~OFF  $(/9!6#6#6#6#6!"+~2*& "*& ~[”*#" â' :¢ V v!q*&!p+q*  !q:2!61!s+q:2!6*&"1!q!6*& ->*& :A:!4!r+s+p+q+p+q!6*~ʯ*~2*M2!6:¦:ڙé*M2Äùe:2#:22*~2!6*~2*~?*N! ** =2!3!6!6:!0:)!46*6#*:w:+s#r:i*#"n!6:2O* ~2*&*:ʿ!4*:w*&*:®*&*~2À*6*~2o:2!6*#~2!4N* :!6*&*:!6!4N* ~2*&*~2*M2:> !Hl!4N* ~2*M2;:2#+s#r*N2!š*#" ͯ ͯ!q!6*""2:(!6(*&*&!s*&!s::H*+":++s#r͛!6:!D*"*M!4&*M:[Ϳa2Ϳ:Al͛*M! ^#VIͿiͿ{ͿͿͿͿͿͿ Ϳ|͛!q!6:! *Nͯ*#"!4͛!6:!R *? !6^ͯD  ͯ*#"!4 ͛L2M2N2O2P2,22:2:2:W ͛Ϳ!6*& ~:HW :1Oͯ*M! ^#V1Ϳ 4Ϳ 7Ϳ :Ϳ =Ϳ*& ~8 RͿM *& >@Oͯ:ͯ͛!4ø :Ҙ ͛ZͿ*M! ^#VrͿØ vͿØ ͿØ w : ͛Ϳ>!Ҷ !6: Ϳ :@Oͯ:ͯ: ͛Ϳ: Ϳ Ϳ:# ͛Ϳ: Ϳ# Ϳ͛!6!6!6!6>!V *& 6!4; !6:: H I>!Ҏ ͦ:› ͦ!6>! *& :=¿ ͦ!4  :=*& w!4[ !6>! :L*& ^O!4 :: Hұ!6!6I*M! ^#Vͦî!6:] ͦI:w ͦ:=_Pî!6!6#6:ʞ ͦ*~ ~ Hҿ *#"Þ *~( !6*#"I::H ͦ: !6:2: :/H!0 ͦ: !҇ I::Hj ͦ:2:!҇ ͦ2:¢ :2ê :2:½ :2 :2*: : ͦ *#" : ͦ*~]~H!6 î!6!6:WI: W: R!6Wͦ*,*-î!6!6:¨I: ʨ: £!6èͦ2::2:2*îI::Hͦ:!6,-<!62:2*îͦîͦî!6,-î!62:2*îͦîͦîC K l?GOe !p+q*~ ~ H*#"ø*~>>_ogDM!>))덑o|g =o&og~B1}CP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl] Copyright (c) 1982, Digital Research 10/27/82Show 3.1ERROR: INPUT: OPTION: DRIVE: Unrecognized Option.Unrecognized drive.Requires CP/M 3 or higher.No directory label exists on drive Unrecognized input.A:0B:0C:0D:0E:0F:0G:0H:0I:0J:0K:0L:0M:0N:0O:0P:SPACE0DIRECTORY0DRIVES0LABEL0USERS0PAGE0NOPAGE !$'*-/#(.[]=, :;<>%\|"()/#!@&+-*?;Zx0NSun$Mon$Tue$Wed$Thu$Fri$Sat$?????????????Directory Passwds Stamp StampLabel Reqd Update Label Created Label Updated------------ ------- ------ ------ -------------- --------------Press RETURN to continue.: Drive Characteristics128 Byte Record CapacityKilobyte Drive Capacity32 Byte Directory EntriesChecked Directory EntriesRecords / Directory EntryRecords / BlockSectors / TrackReserved TracksBytes / Physical Record, Space: Number of time/date directory entries: Number of free directory entries: Active User :Active Files:# of files :Label for drive AccessCreate on off on on off on off 1}1}{o&" >0 ͑*!& ~ :!<2!*!& " 2 h2 !!6>!!Y*!& 6:!<2!;6f!$ 6(2! 6D~!% 6ͱ!!6>!!*!& ~2 ʺ*!& N*!Mz:!<2!†v! q* & ! p+q* ~* N* #"     :$ e! 4~<<+~He  MC]! 6  ! p+q * DM }! q* &:~ҝ:}¦:}`O! : ½2}Õ! p+q* ~?2~* 2}͕2}͕! p+q* !Z 6Z 1!Z 6,Z 1!Z 6]Z 1|"  ! q* &.! q* &e! p+qi* DM! q: <2 O* : w! p+q* ~$* : <2 O* w* #" ! q: 0Oͦ! q: O: O! q* M:ͦ! q* &! ͆K* &! ͆M! q* M& /ͦ: e : s ! 6: <2 O* ~2 : ” \ Æ : 0 ! s+q! 6͆ ͕ ڶ ͕  : : : H2  : 0! w \ ö ! : #~! H : ! s+q+q͆ ! : 4 \ * M* ͞ ! s+q: 2 : * &) >;H{ : =: ! q* &! ͆))))* &͈ } ͞ =2 : 2! !!6 * & ~2!/*! 2 /cN 2 : !!: H * &) : N_!mͥq* & NC * M* C _* #q#p͞ O * w:; O * w* ~¬ : :  :; 2!* 6 :; O * w!!s+q:!!!! 6N!m"!:  !n"!!  ! +s#r! 4 ! 6 >! P : =2 2 ! !6* &) : !m! M  * ~2!*  ~2!*  ~2!* #^#V" +!͆! !s ! !6: >;! HҮ ! !6 * &) : !m ! s+4* ~ : !O! DMͽ ͦ* MK * MK * M&  ͦ*!M *!M * ~& *!M! !p+q!" !* !"  " * ~~He Q ! 6 Þ * ~~Hқ ! 6* ~2 ͢ * &* " !Þ !-!p+q!!6.*,!DM! -¶ !' !.!6> !.! *.!& ! N:.!<2.! \* ##N!ͥ"/!!1!q:1!2 Oͅ !3!p+q!2!* >2!y#M͹!7!s+q+p+q:7!=27!f*4!:6!w*4!#"4!I!!s+p+q+p+q>!*!*!͆!!s*!*!͆"!*!! ͆"!>!º:!:!!!6:!0Ov!!p+q!'"!!!6>!8*!*!͆:!=2!O!8! s*!*!͆"!*!! ͆"!!!6#6:!=2!}*!&8! ~0O~:!:!Hz,~A!!q*!&8! ~¤:!Ҥ:!ʤ*!M!!6!!r+s+p+q!!6#6>!!0*!&*!*!&*!~!!#N*! w*!&*!^! ͆!!s#N*! ^! ͆*!&*!q:!<2!!!p+q8!<?!<*!N#F*!##~2!!!6>!!ڙ:!҇*!&w!) N#F?!ͱ:!2!:!<2!d8!?!ͱ9!!p+q*!##~2!*!##~*!##w*!*!q#p*!#:!*!#w!!p+q*!#* ##N͹* *!##* ##NH*!##w*!* ##N*!q#p: AO !!r+s+p+q*!/!a*!q#p*!ڒ*!*!q#p*!N#F*!q#pc!!q!"!"!!!6!"!* !:!*!DM2!:!/!!H*!"!ҫ*!!"! i8*!##6* N#F*!q#p,ͦE* N#F^ * ^#V))DMy* ~* N!!+s#r*!DM  1:!!p+q*!##6*!*!s#r!!p+q!'"!!!6>!ʚ*!*!͆{2!*!*!͆"!*!! ͆"!>!!!+~Hҗ!!6:!0O5>0 ҹ" ͓DM$* Mqͦ1k!!p+q 8R*!}OW͛: : 2!"!S"!!!6>!ʈ*!}g: /X!!:!U*!DMg*!M*!DM!!+s#r!!+s#r#~!X *X g 8)*V g !!6>!! *!&& 6*!&6 ) >wB#6:!<2!!"X 5!"!:}:}2!*!& ~2!:!!*!& "!*!##"!*!#"!:!2!:!2!O!& 6>!!Ґ*!* ~Ҥ*!~*!&6 ) N#F*!&6 ) q#p*X #"X %* & 6>!X * N#F`i"X * N#FPY*X *!"V 8QhOg 8`* & ~/\!!6>!!ڐ*!&& ~҆*!&g:!<2!a 8o!!6>!!*!&& ~*!&6 ) N#Fg:!<2!¡͘* & ~/͘!!qD>!! :}0:}`O! ~ * * Ḿ2!>!!/:}o&"!~i8 Eiji:!@@†Ìi B:% /:!րHҽ:!@@:!:! *! DM͟ *! DM͟ >͑: AO !!6> !!x:! ].*!&*!>O:!<2!G!!q!!6*!& :•>*!& :!©:!:!<2!Â!!r+s+p+q)!!6?:!:!2!*!My2 !!6: ]:!/ *!My2 ?:!2 ͩ:!:!2 : 2!:!2!!!6:!2!?:!Jñ*!& *!*!&*!=2!!!:!£!!6!!6:!!!ڠ]:!/Җ6:!<2!~æ6!!6ͩ>:!2!:  l+s#r): * #" :2 :!:!2!*!&*!~2!*!&*!:9:!<2!:!2!*!&*!:!(*!&*!~2!!!6* ~2!:!2!!!6* #~2!:!<2!*!&*!:}!!6Ó*!&*!:!ʓ!!6:!<2!*!&* ~2!*!&* ~2!*!My2 : : H: H: H:!<2!*!&* ~2!*!My2 :!2 :  l#+s#r* Ny2 !D* #" ):  +"!!!6: !!y*!N*!#"!:!<2!W!!q*!&ͥ^ *V& ~ʞ*!&ͥ^ *U& ~ʾ1*!&ͥ^ *T& ~*!&ͥ^ *W& ~#*!&ͥ^ *S& ~: :: 2 * & : w* #" * Ny2 : ZÔ!: q!: qÔ* &ͥ^ *V& 6* #" >* &ͥ^ *V& ~* &ͥ^ *V& 6ʹ2 !X: !$ 6!Y: !$ 6* &ͥ^ : =O 6-͑iE!: :>!: G>Zʹ2!_Þ:!=2 * & : w* &ͥ^ *V& 6!: ʝ* +" ͑iE! 6* Ny2 !* &ͥ^ *V& 6! 6!: ;2 -: K-!: !!: !L! 6* #" !: K* Ny2 !K?͑iEi`N#Fog_og_ogDM!>))덑o|gҟ =DM!>))Ҵ =¬~ º~ ^#V) ^#V|g}o _{ozgO{ozgi`N#Fogo&og_{_z#W  F!M!T![!b!i!p!CyÙCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]CP/M 3 SID - Version 3.0$1 !~=W!x ~#ôbx {~#o}o.ÃO$ y͏ , $  ͌ 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# z8O!B N#N ¾SP.* |} !9":q!"28!"9:] ,:e &͟:l &:u &ͮ!I 1lĤ>#J ,!6-X5AڔҔ_!o^#V - G  + Q  1ͳҔ~½:,=”͍" ,~ڔʔ͍=͍=͍!,o͍ "c=͍=”)*c)!"f,*f*c"h ,*cL>::ʗ^#V#L cxZy y~ #*f ڵ™y ¶"c:,*hT*f , ,T:e,>2e,:ʔ%:e  ͟:u ' ͮ!I Y|”,,}5 2l~2m͍͍"n͍"pDMs !l6ʏ } "v=ʏ =ʏ YP !~ #^#V:l *v{ z "r~62t #w6 ” 1l*v*t!~4 #~#F# x ~#s#r#w>~ʽ ͍=; =”͍Lᯕo>gL,>#!u^#V#0}o|ge X x| y0ʃ GÏ yÏ  G| Q z,{ ,<,>'{>',*##V+^+N+y,L ~+ , :”%,ͳ~ ͍" = ͍"=”" > 2,Y,!|G }G , w#. ~ڔ ͍!=:r ”͍| !| !|”"!~ʩ #~#V§ z§ :w, ‰ :ʔ!~ :w#s#r, ¾ Ô!~ : 6 ~#^#V ,:ʔ!\6#>  w# ' >w# 1 6~!I =”*"!l6~# T :]?2 7ʔ!">HXE͆*ʾ \ͤ2 w# ™ ͥ͝* ҆ !""Ô\ʔ:¾ W$ _$ $ O { x! i`"v2 $ $ w# $ ͥ͝”þ \̀\̀ GтWx!͓B :>ULT͆!6\~# S 2|:] !7<ʔ\ !t   _*\ ʣ \ w Ø *+\ !ڔw{Ҕè *#^#Vr+s+6͓Ҕ*"s#s#rt ! *v*",!*L*L*vL*+L,o=”͍L:X^#VL\~J ʯ.y:,>."Ž! ;w#́=”͍:ʨs#r#;”}w#:;#;>>2o!"#͍}ʔ==”͍""2mNl :ʔ!\>2|!"*"~:8”*"*"*͠ڔ!"\zn<ʔ*ͯ~# _\V”*#"͠:W\J!*L!,:2:2>2::>2 N, !9# Ô ”J~,=”͍xA|”}ҔgA>;Ag};,;Q|”}!qw,s#r,:[|_!~ʐ![4Ð\ͤŽ2[g>>?,!e>Cw#>Ow#>Mw!u>Sw#>Yw#>Mw., * ͽw#  ͽ  * ?r# {zPY! |}>2!""!Ow #w 0q!\6 ͤ!"~”͍͍͍!6W6!6# ,œ>2ß͓ͣ ͓ͣ ͓ͣ ”ʔ   :@w# G6#. 6# x!a_!~> 55*~#"ů2[\ͤͤͤͤͤͤ!ex#y#*}|͓"*}|":!͓> _ͤ~# 07> >C  ͤL:8>.^+~+:8*>:|}^ >.*f}o|/+- , 0 Ô^#V#*NyҔ** n +ñ q#^#V""~/o>g++Û!.ʔ@͔^#V= ͔^'D! ڔ'?!q'”S_&#hqf0 Ҕ)DM)) O I^*r^#V#^q̀))))oqh"s#r#!4-®+»*+ þ-y_xWþ!IXN!p~ !D_^!x^#Vx1>-~~>=G!q~L!9#x sYYͳғ*v" !6û+"f*v~#cڻʷ^#Vû~*v~Gx5@xv5 x805 x6 45>=*t~*t$5x*l$*n:585"CZMEIABDHSP!"2"t+"v!91t*v~:t2l!~ʐ#^#V#~ ƒ!~6ʳ=G#^#V#~xâ#"v!N#FN*>7l :|!~9#~#V*v9z9~==2wͲ:l <!*vNl  |Ͳd=Xl *v5Nl :l|*pMD*n:m7l !"N2>**vͳҟ" *t"c, PASS !~*+"|w=2~ !~##Z:t*rw2t*vF#!s! ^#V&N&N,`r<¦Gæ::^#V#2*r^#V<[>èæxjê8_æ*t2¦,:?*v###æG>è><7*|!N*v!>#> :!>=_~/w/w{G=YP"*##F+N+~a/o>g{\z\<33=>!y$ڇ *y$&>'d !y$4d SYMBOLS NEXT MSZE PC END 6!z$q!h#6?! h record(s) written. h#H!:#A{$O !:h# !2h#!@ !:h#S:h#QHP!:#<2|$2h#:h# HG!)!2h#Ô!2h#02|$O> j!!|$6Ô!2h#02w$O> @!!BH @@ABH B! "BHI$$BI$BI $ HI D$HD$$ H B!$D$"$B$DA!ABI$H B$I $HI$H$! $I $I$I $I $BBHHA"HI$H!$HH$ IDH$$H$"BD $$$HH$B@@D!@H" H " "BI$DI$I $H @HI"$AD@@HA$ $@ $@D IB!  $H $I$$HD H!"A""! I$DDI"I$ @$I"DH BH" !I B  B$H$@"IHBI $$@H@ @@@D !@BA$!" D!$A$B@$@@$"$"@  D@@"DH $I!"DH$BB$"H@ $!D$$I$I$$"A$$I  D UUTH@@!@H@ !$  ASUB 1xCP/M Version 3.0COPYRIGHT 1982, DIGITAL RESEARCH151282Yl]Invalid file name $Error On Line $Enter Password: $ERROR: No 'SUB' File Found$CP/M 3 SUBMIT Version 3.0 $Enter File to SUBMIT: $SUBDisk Write Error$Random Read $.$Invalid ASCII Character$Parameter Error$ERROR: Directory Full$Requires CP/M 3.0 $11G"*}0|HҤbP2IK 1">d*++"~"!\. v!q*&!p+q* !s+p+q*:w#6* *#"N#Fy !p+q*!p+q*2 !p+q*!p+q*!p+q*!p+q*!!p+q*2 !p+q*!q*-!q:2!61!s+q:2!6*&"1!p+q*<!s+p+q+p+q:=2d** w*#"*#"=  !s+q+p+q:=2ʩ*:w*#"Ì!p+qe*DM!\.\s!q:a:{: :O2:eel !6>!ڜ2 K*&l :w: T:_:…:r:=2O!l 6 3:•!4**& ~ ~ H!4Ýl :S*Q*Sl.l\P"*}=*|&el\P"=*|5.*& 6!6͝*& ~( 2*& 6e!"!\" "\p.e.:\2O>:2\*& ~ ~H~ H.!4͝*& ~2!6>!`\̓[>!6:<2=O! ~2 ½:<2O>9ҽ!60+~9ҽ!60+~9ҽ!60+~9ҽ!60+4:͓ͪ!"!6:= !6!6#6D2:D H% : " :#$ͪ:;!6+~<;!6:$¨D2$X*M å:02O> p<ͪå!6͝:ʔ!5K ҎÄ͝xK ҥ*M Ô" :^D2:^^ :@: O :`:@O :`O " :!:/H     " *M : 2    *++" *& ~2 :Ht !4>>!""\ !6>!ڷ :+ ~° !4‘ * DM*"À * DM!" }2 ͣ2 :  ͪõ!q!r- "w * :w:C w *#" "*#~22_! 8!0!s*&:0!s!6ͳ:  sͳ:  L!`i^#V#~#fo yo w G: xAo o a{ _o     `i~< #~2#~2#~2*| W \!\~R 2 .n~ >2 6!.t~: +  >2 6!N#F#*" ^q#Vp" N#F##"^q#Vp" 4! 7o |  ! 6   \\ ? >_ 1m :~# yo ɍWARNING: Cannot redirect from BIOS $ERROR: Auxiliary device redirection not implemented $ERROR: Insufficient Memory $""SYSIN SUB_ogDM!>))덑o|gQ =?i`N#Fogo&og_{_z#W00001 : $SYSIN $$$FGET :<***.n6.t6 LL!p:~y !6 <ʊ~"x!=F#fh!:~!«!>w~:!5*.~w:; :~!9"1A#u.t.~@w :&/3͖!~6 :~wucy! ʎB d{<ʑ  '*2.2+6.w 22*2$*.6#6*.~w#~=~#4Ʌo$͖O̓!54  !F6#ȷxO҃>^̓@_: N#͖§>  *.>wÔ#wt~xڔp> ̓ 8>""SYSIN SUB hhhhhhhhhhhhhhWARNING: PROGRAM INPUT IGNORED $ 151282 COPYR '82 DRI gggggggggggggggggggggggggggggg"D! BH!H@ $!!$"A! D$DHH$B!"  @A  !y~=W!x# ~#bxE {8~#o}oA'.`28!Ip+q*HT!J6J T ` T!p+q*T> >/Ҥ×!p+q*DM͛:̀ ̀:2:!!K:*&L Ǹ!4!K6 ͐uÇYALPSID'TCELLOC$LAITINI!ÓCOPYRIGHT (C) 1977, DIGITAL RESEARCH g gzd{ *9 Wl> W> W*"!"^l!]kl$]xl']::>2l!6!"!~4*s,r,"!~Ol!F2y* "*xT-V-^yA!~4x]> WO" Q>2y*"  INITIAL = COLLECT = DISPLAY = "-A" IN EFFECT, ADDRESS BACKTRACE READY FOR SYMBOLIC BACKTRACE BACKTRACE:%B 2!4þ *%"%:/ ͩ!4¡ :$ !4!"%!q: O !{4>!O :!{O :2*'M!8 ^#V%!t ͫ *%B :w*%#"%` Ø Ø Ø Ø Ø ͩ` *M6` !6 ` !6 ` !6 ` *&T` !6 ` !6 ` !60 ` *&D @@ I$B$!!D!$"H@* ͡. ;ͣW!E# ¡ # ¬# ·@ʴʥzʖ=ʐ=|zJz?4)z z@_@@@ CRT LPT @CEN @GRAPH LPT1 LPT2 1  ͍ %͍͍ʢ͏͕!~# 4͕ ͍:g:s:_g:s!]~$o#~B̩1ɷW|g ͏͕%z͍͍ ͍vCPM3 SYS CPMLDR error: failed to open CPM3.SYS $ CPMLDR error: failed to read CPM3.SYS $ CP/M V3.0 Loader Copyright (C) 1982, Digital Research $021182" yڥ2 2 : 2 {2 !" " 9"@1!N y2K!dڛ_^#V*    ; A G :ž y! 4 5~yµ5 6y ’ ͒: ! OͻMD2 > BDOS ERR: $Select$Perm.$ v{_zW{_zW )8# ? w#JJ |^#V###" ##" ######" !  I* ! I* |! 6ʕ67 * w#w* w#w#w! ^#V#Fͪ' O* &! s#r#p* N#F* ^#V#F* : O}|y* %+* .}|y#* %* DM"  * s#r* s#r#pyoxgkDM* 0 MD" ! * MD$ : O&! N:  yG>O: ʐÇ* ͒ : ʨn` ~#for2 O͚" }: O* 7" 2 " : O: G2 ! w*  * !~2 ~2 : 2 : w: w |g}o' )4: O!3yoxg: O&}* : o$~w{ozg ^#V: ʏ> Û͡" ͳ* ç* r" ! ~#O&E: N/* " y2 ʹ͗ͻͫʛ* X: O~Jyʔx ʍ ʂJÍNJ# h2 G>G:~X*  IOw!x>Fwx2 2 ~: : 6: w2 ~O !>w:ͨ2 4O.5Ϳ: ! S: ͮ: ͛ͳ: < =! wW* M_S -* MD:" : 2 ɯ2 >G=O* ~~w#~2 ~wc~~p2 !" >2 * ~=2 ~2 ͛o>* w!" 2 =2 !" Û͛o͢͢' ͫ~<7 w@ͩ7: " Û: ~ : 2 : ~ * 6: p w#: w: w*@* }D> $* * T : _2 {2 " r" [  ?, d >l [ I6: <!=6 * J " * K : G/O*  * =d ## Ih c c c c c c ò õ ú ÿ c c c c c c c c c 2 c Ú î Ð c c c ( / !/!/!!6 6 K  : 2Cd! o(!d |G}2 <<2 >2! :s1>!{!#O: :(y: ( ( 2>2Mx: ɯ2S" Cx> >2*|o&~!!x( >>2C2!> (>w2CCC!y*`i#:™s1k( ~ ̀N  x[!R0xcy{̀ L ~w so F6# 66[ :͈ >! > >NF(90>2~[ :> y~Y(>YWy> ~݆ݾ8(>6w4~ ݖw ~~ F8 C"!>!x((:Y>> w( H6#~:=_Gn f s1k( ~ ̀N; >͈~w sF 6#66>͎> !!>O O!"6: W7!͘ɯNF:!0 ) 0 ~=O 0}ϋ}ϋ y(ϋ y(ϋӇ~G#N#/^^ @_@:w:w:wwwd: : ɯEwwwO F BDOS ERR: $Select$Perm.$ v{_zW{_zW )8# ? w#JJ |^#V###" ##" ######" !  I* ! I* |! 6ʕ67 * w#w* w#w#w! ^#V#Fͪ' O* &! s#r#p* N#F* ^#V#F* : O}|y* %+* .}|y#* %* DM"  * s#r* s#r#pyoxgkDM* 0 MD" ! * MD$ : O&! N:  yG>O: ʐÇ* ͒ : ʨn` ~#for2 O͚" }: O* 7" 2 " : O: G2 ! w*  * !~2 ~2 : 2 : w: w |g}o' )4: O!3yoxg: O&}* : o$~w{ozg ^#V: ʏ> Û͡" ͳ* ç* r" ! ~#O&E: N/* " y2 ʹ͗ͻͫʛ* X: O~Jyʔx ʍ ʂJÍNJ# h2 G>G:~X*  IOw!x>Fwx2 2 ~: : 6: w2 ~O !>w:ͨ2 4O.5Ϳ: ! S: ͮ: ͛ͳ: < =! wW* M_S -* MD:" : 2 ɯ2 >G=O* ~~w#~2 ~wc~~p2 !" >2 * ~=2 ~2 ͛o>* w!" 2 =2 !" Û͛o͢͢' ͫ~<7 w@ͩ7: " Û: ~ : 2 : ~ * 6: p w#: w: w*@* }D> $* * T : _2 {2 " r" [  ?, d >l [ I6: <!=6 * J " * K : G/O*  * =d ## Ih c c c c c c Õ ç Ø Ý â õ c c ñ c c c c c c c  c } Ñ s c c c  !_!_!!6 6 >"2CG! o(!d |G}2 <<2 >2! !#O: :(y: ( ( 2>2Mx: ɯ2S" Cx> >2*|o&~!!x( >>2C2E!> (>w2CCC!y*`i#:|s:1|͛( ~ Ͱ~  [[!R0x͗y{:c / ~w VR F6#͹ 66> :~͸͹ >!| > >NF(90>2~> :|> y~<(><Wy> ~݆ݾ8(>6w4~ ݖw ~~ F8 C"!>!x((:<>> w( H6#~:=_Gn f s:1|͛( ~ Ͱ~͡ >͸~w VF 6#͹ 66>"t/ > !!> dt!d>կNF:!0 ) 0 ~=O 0y\!p\"S!! >}ϋ}ϋ y(ϋ y(ϋ~G#N#(_AP@_@:w:w:wwwG: : ɯɯwwwO FO/4\>(N2 i>!6 * & 6! 6: ,v! 6> W ʹ * ~‘ù* ~[ʟ* #" * ~N* #" * ~O* ~ H* #" ! 6 * ~P! 6* #" * ~]* ~H$ù* ~A0×* #" * ~]* ~HTù* ~G`×* #" * ~]* ~H҄ù* ~Eʐ×* #" * ~]* ~Hҹ: : /2 : ==2 : ! 6! 6\O2 :  . \ - v! q* &! p+q*  ! s+p+q* : w#6*  * #" N#Fy  ! p+q* ! p+q* ! p+q* ! p+q* ! q* &-! p+q* ! q: 2 ! 6 1! q: 2 ! 6 1! r+s+q: 2 ! 6* #s#r 1m % %!% s+q+p+q:% =2% ʍ*" :$ w*" #"" p52& aڧ:& {ҧ:& :& XX>l c!' 6>!' 6͎2( *' &l :( w:( 6:( ÷:( $:' ÷:' =2' O!l 6 :( /!' 4~2( !) q:) R>:) c>:) t>:) ‚>:) >!+ p+q** ~ʯ** >@O%:%!, 6> !, :, .%*, &** >2- *- M%!, 4´!. q>:. >:. 1>!0 p+q*/ ~ ~ H?*/ #"/ */ ~K>>!2 p+q!3 6#6:3 ҁ*1 ~?s!4 6!3 4*1 #"1 ]:4 : : <2 ! >52  %: ·: ! 6! 6lͷ: 2 ! 6 ͇" * }= * |2 % FͫXlͷ: 2  ͇" = > ͑ %* M=* } ͷ! 6! 6: / ͧH ! 6>! * & ~2 — ! 6:  ~Ү 52 : : ͅ* M%! 4w [ =ͷ\26 =:6 :6 o&"7 E"9 G"; I"= "? "A "C .*7 DM -J :\2 ͅX ͑:%ͅXͷ*9 E)*; G)*= I)*? )*A )*C )!; \e .*; \ - 26 * ~ * ~ H * #" !`i^#V#~#fo:  y  wO G:L xAڠ Ҡ a{3 _à  F F : i`N#Fogo&og_{_z#W CP/M RMAC ASSEM 1.1 #001 WDRIVES.ASM Title 'Wdrives.Asm' ;------------------------------------------------------------; ; Definition Module for the Floppies and Winchesters in ; ; the system. ; ; ; ; Note: If You use Adaptec controller, You link ExtmemA.Rel ; ; and if Xebec, You link ExtmemX.Rel to BNKBIOS3.SPR ; ; This will done with the command: ; ; SUBMIT GENWBIOS A for Adaptec ; ; SUBMIT GENWBIOS X for Xebec ; ;------------------------------------------------------------; ; Latest update: 1985-11-15. PSW ; Biosrevision: F ; ; For the RMAC assembler. ;------------------------------------------------------------; ; Answer in field #1 and/or in field #2 !! ; ;------------------------------------------------------------; FFFF = True Equ -1 0000 = False Equ Not True 0000 = NetWork Equ False ;------------------------------------------------------------; ; Field #1 -- SuperJet. ; ; ; 0000 = SuperJet Equ False ; False indicates You; ; ; must goto field #2.; 0000 = TwoWins Equ False ; False: 1 drive ; ; ; True: 2 drives. ; ; System configuration for SuperJet: ; ; A: Winchester 1st part appr. 28800 KBytes ; ; B: Winchester 2nd part appr. 29300 KBytes ;  ; C: Floppy 5" 1200 KBytes. ; ; D: Floppy 5" 800 KBytes ; ; The tape streamer does not have a logical device address. ; ; If 2 winchesters: ; ; E: Winchester 1st part appr. 28800 KBytes ; ; F: Winchester 2nd part appr. 29300 KBytes ; ;------------------------------------------------------------; Page 66 If Not SuperJet ;------------------------------------------------------------; ; Field #2 -- Other configurations. ; ; Here You must answer 6 or 7 questions: ; ; 1: Do You want Verify after write on floppy ? ; ; ; FFFF = Verify Equ True ; Verify after writeF.; ; ; ; 2: What kind of floppy system do You want ? (Only 1 true) ; ; ; 0000 = M8 Equ False ; 8" 1200 KBytes ; FFFF = M5 Equ True ; 5" 1200 KBytes ; 0000 = Min96 Equ False ; 5" 800 KBytes ; ; ; ; 3: Do You have an external 8" floppy drive ? ; ; Not supported with M8. ; 0000 = Jet8 Equ False ; True means YES ; ; ; ; 4: What kind of winchester controller ? ; ; ; FFFF = Adaptec Equ True ; False = Xebec ; ; ; ; 5: How many winchester drives ? (One or two) ; CP/M RMAC ASSEM 1.1 #002 WDRIVES.ASM ; ; 0000 = TwoWins Equ False ; False = 1 drive ; ; ; ; 6: What kind of winchester do You want ? (Only 1 true) ; ; Entries BlockSize; 0000 = Ro204 Equ False ; Rodime 204 1024 2K ; 0000 = Ro204E Equ False ; Rodime 204 E 2048 4K ; 0000 = Ro352 Equ False ; Rodime 352 512-1024 2K ; 0000 = XT1065 Equ False ; Maxtor XT-1065 2048 4K ; 0000 = XT1085 Equ False ; Maxtor XT-1085 2048 4K ; 0000 = CDC66 Equ False ; CDC 9415-66 2048 4K ; 0000 = CDC86 Equ False ; CDC 9415-86 2048 4K ; FFFF = Nec5126 Equ True ; Nec 5126 1024 2K ; ; ; ; 7: If Rodime 352 You must answer how directory entries. ; ; ; FFFF = E512 Equ True ; False = 1024 ent. ; ; ; ;------------------------------------------------------------;  ;------------- No more questions below here -----------------; Endif Page CP/M RMAC ASSEM 1.1 #003 WDRIVES.ASM If SuperJet Verify Equ True M5 Equ True M8 Equ False Min96 Equ False Ro204 Equ False Ro204E Equ False Ro352 Equ False XT1065 Equ False XT1085 Equ False CDC66 Equ True CDC86 Equ False Nec5126 Equ False Adaptec Equ True E512 Equ False Jet8 Equ False Endif ;----------------------------------------------------------------; ; The byte called 'ReStep' is interpreted as follows: ; ; ; ; 1xxxxxxx ; No retry ; ; 0xxxxxxx ; Retry 4 times ; ; x1xxxxxx ; No retry a read of sector that contains; ; ; a data error before error correction. ; ; x0xxxxxx ; Reread before error correction ; ; xxx1xxxx ; Disk has servo information. ; ; xxx0xxxx ; No servo information. ; ; xxxx0000 ; 3 msec step rate ; ; xxxx0001 ; reserved (for servo) ; ; xxxx0010 ; -"- ; ; xxxx0011 ; -"- ; ; xxxx0100 ; 200 usec buffered step ; ; xxxx0101 ; 70 usec buffered step ; ; xxxx0110 ; 30 usec buffered step ; ; xxxx0111 ; 15 usec buffered step ; ;----------------------------------------------------------------; If Adaptec ; Adaptec: If Ro204 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If Ro204E ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If Ro352 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 36 ; # of Kbytes to reduce from second winchester unit. Endif If XT1065 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 64 ; # of Kbytes to reduce from second winchester unit. Endif If XT1085 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 72 ; # of Kbytes to reduce from second winchester unit. Endif If CDC66 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 84 ; # of Kbytes to reduce Gfrom second winchester unit. Endif If CDC86 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 84 ; # of Kbytes to reduce from second winchester unit. Endif CP/M RMAC ASSEM 1.1 #004 WDRIVES.ASM If Nec5126 0017 = ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. 0024 = Reduce Equ 36 ; # of Kbytes to reduce from second winchester unit. Endif Else ; Xebec If Ro204 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif If Ro204E ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif If Ro352 ReStep Equ 00000100b ; RETRY & BUFF STEP OPTION. Reduce Equ 34 ; # of Kbytes to reduce from second winchester unit. Endif If XT1065 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 60 ; # of Kbytes to reduce from second winchester unit. Endif If XT1085 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 68 ; # of Kbytes to reduce from second winchester unit. Endif If CDC66 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 76 ; # of Kbytes to reduce from second winchester unit. Endif If CDC86 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 76 ; # of Kbytes to reduce from second winchester unit. Endif If Nec5126 ReStep Equ 00010111b ; RETRY & BUFF STEP OPTION. Reduce Equ 34 ; # of Kbytes to reduce from second winchester unit. Endif Endif 0000 = Rate0 Equ 00000000b ; 3ms/6ms 0001 = Rate1 Equ 00000001b ; 6ms/12ms 0002 = Rate2 Equ 00000010b ; 10ms/20ms 0003 = Rate3 Equ 00000011b ; 15ms/30ms FFFF = DoublS Equ -1 ; Double sided 0000 = SinglS Equ 0 ; Single sided 0000 = Unit0 Equ 00000000b ; Physical Unit select 0 0001 = Unit1 Equ 00000001b ; Physical Unit select 1 0002 = Unit2 Equ 00000010b ; Physical Unit select 2 0003 = Unit3 Equ 00000011b ; Physical Unit select 3 0008 = Inch5 Equ 00001000b ; 5"-Floppy 00D4 = Inch8 Equ 11010100b ; 8"-Floppy 0000 = DoublD Equ 00000000b ; Double density 0020 = SinglD Equ 00100000b ; Single density  If Adaptec ; Common area 00B8 = Comm Equ 0B8h ; 64K - 2*9K = 46K = B800h Else Comm Equ 0BCh ; 64K - 2*8.5K = 47K = BC00h Endif If Adaptec 0001 = Contr1 Equ 00000001B ; Controller unit 1 CP/M RMAC ASSEM 1.1 #005 WDRIVES.ASM 0002 = Contr2 Equ 00000010B ; Controller unit 2 0004 = Contr3 Equ 00000100B ; Controller unit 3 0001 = WUnit1 Equ 00000000B OR Contr1 ; Winchester phys. unit 0 on Contr1 0021 = WUnit2 Equ 00100000B OR Contr1 ; Winchester phys. unit 1 on Contr1 0002 = WUnit3 Equ 00000000B OR Contr2 ; Winchester phys. unit 0 on Contr2 0022 = WUnit4 Equ 00100000B OR Contr2 ; Winchester phys. unit 1 on Contr2 0004 = WUnit5 Equ 00000000B OR Contr3 ; Winchester phys. unit 0 on Contr3 0024 = WUnit6 Equ 00100000B OR Contr3 ; Winchester phys. unit 1 on Contr3 0002 = Leav Equ 2 ; Interleave factor 0048 = LSecPerTrk Equ 72 ; No of logical sectors/track Else WUnit1 Equ 00000000B ; Winchester phys. unit 0 on Contr1 WUnit2 Equ 00100000B ; Winchester phys. unit 1 on Contr1 Leav Equ 7 ; Interleave factor LSecPerTrk Equ 68 ; No of logical sectors/track Endif If E512 0200 = Ent Equ 512 0000 = AL1 Equ 0 Else Ent Equ 1024 AL1 Equ 0FFh Endif If M8 Sign Equ '8' Else 0035 = Sign Equ '5' Endif Extrn FdRead, FdWrit, FdLgin, FdInit Extrn WRead, WWrit, WInit, WInitd, WLgin Public @DTbl, ?Titel, @Commo Cseg @DTbl: If NetWork DGw WinA,WinB,FlA ; A:, B:, C: Else 0000 50000A002D Dw FlA,WinA,WinB ; This order must not be changed. ; Check boot-routine in ; BIOSKRNL.Z80 Endif If Min96 Dw 0 ; D: not installed Else 0006 7300 Dw FlD Endif If TwoWins Dw WinE,WinF ; E:, F: Sign0 Equ '2' Else 0008 00000000 Dw 0,0 0031 = Sign0 Equ'1' Endif 000C 00000000 Dw 0,0 ; G:, H: not installed If Jet8 Dw FlI,FlJ ; I:, J: Else 0010 00000000 Dw 0,0 Endif 0014 00000000 Dw 0,0 ; K:, L: not installed 0018 0000000000 Dw 0,0,0,0 ; M:, N:, O:, P: not installed CP/M RMAC ASSEM 1.1 #006 WDRIVES.ASM 0020 B8 @Commo: Db Comm ; Page CP/M RMAC ASSEM 1.1 #007 WDRIVES.ASM Dseg ; Define WINCHESTER LOGICAL UNIT A: (Winchester boot else B:) 0000 0000 Dw WWrit ;; 0002 0000 Dw WRead ;; 0004 0000 Dw WLgin ;; 0006 0000 Dw WInit ;; 0008 01 Db WUnit1 ;; Physical unit for controller 0009 00 Db 0 ;; 000A 0000 WINA: Dw 0 ;; No trans table 000C 0000000000 Db 0,0,0,0,0,0,0,0,0 ;; 0015 00 Db 0 ;; Mediaflag 0016 5F00 Dw WIN0 ;; Address to DPB 0018 0000 Dw 0 ;; Checksum None. 001A FEFF Dw 0FFFEh ;; Alloc vector set by GENCPM 001C FEFF Dw 0FFFEh ;; DirBcb 001E FFFF Dw 0FFFFh ;; DtaBcb Not used 0020 FEFF Dw 0FFFEh ;; Hash 0022 00 Db 0 ;; Hash bank ; Define WINCHESTER LOGICAL UNIT B: (Winchster boot else C:) 0023 0000 Dw WWrit ;; 0025 0000 Dw WRead ;; 0027 0000  Dw WLgin ;; 0029 0000 Dw WInitd ;; 002B 01 Db WUnit1 ;; Physical unit for controller 002C 00 Db 0 ;; 002D 0000 WINB: Dw 0 ;; No trans table 002F 0000000000 Db 0,0,0,0,0,0,0,0,0 ;; 0038 00 Db 0 ;; Mediaflag 0039 7E00 Dw WIN1 ;; Address to DPB 003B 0000 Dw 0 ;; Checksum None. 003D FEFF Dw 0FFFEh ;; Alloc vector set by GENCPM 003F FEFF Dw 0FFFEh ;; DirBcb 0041 FFFF Dw 0FFFFh ;; DtaBcb Not used 0043 FEFF Dw 0FFFEh ;; Hash 0045 00 Db 0 ;; Hash bank If TwoWins ; Define WINCHESTER LOGICAL UNIT E: Dw WWrit ;; Dw WRead ;; Dw WLgin ;; Dw WInitd ;; Db WUnit2 ;; Physical unit for controller Db 0 ;; WINE: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN0 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb Dw 0FFFFh ;; DtaBcb Not used Dw 0FFFEh ;; Hash Db 0 ;; Hash bank ; Define WINCHESTER LOGICAL UNIT F: Dw WWrit ;; Dw WRead ;; CP/M RMAC ASSEM 1.1 #008 WDRIVES.ASM Dw WLgin ;; Dw WInitd ;; Db WUnit2 ;; Physical unit for controller Db 0 ;; WINF: Dw 0 ;; No trans table Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw WIN1 ;; Address to DPB Dw 0 ;; Checksum None. Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh ;; DirBcb  Dw 0FFFFh ;; DtaBcb Not used Dw 0FFFEh ;; Hash Db 0 ;; Hash bank Endif If M8 Or Jet8 ; Define 8" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:) / J: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+DoublD ;; $FdXsl Db 0 ;; If M8 FlA: Dw 0 ;; No trans table Else FlJ: Dw 0 ;; No trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8D ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb,H DtaBcb, Hash Db 0 ;; Hash bank. Endif If M5 ; Define 5.25" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:) 0046 0000 Dw FdWrit ;; 0048 0000 Dw FdRead ;; 004A 0000 Dw FdLgin ;; 004C 0000 Dw FdInit ;; 004E C8 Db Inch5+Unit0+DoublD+11000000b ;; $FdXsl 2 MHz 8" Mode 004F 00 Db 0 ;; 0050 0000 FlA: Dw 0 ;; No trans table 0052 0000000000 Db 0,0,0,0,0,0,0,0,0 ;; 005B 00 Db 0 ;; Mediaflag 005C 2100 Dw F5Max ;; Address to DPB 005E FEFF Dw 0FFFEh ;; Checksum vector set by GENCPM 0060 FEFF Dw 0FFFEh ;; Alloc vector set by GENCPM 0062 FEFFFFFF Dw 0FFFEh,0FFFFh ;; Let GENCPM setup 0066 FEFF Dw 0FFFEh ;; DirBcb, DtaBcb, Hash 0068 00 Db 0 ;; Hash bank. Endif If Min96 Or SuperJet Or M5  ; Define 5.25" 2x80x5x1024, 128 entries. Unit A: (Floppy boot else C:) ; Unit D: (SuperJet) 0069 0000 Dw FdWrit ;; 006B 0000 Dw FdRead ;; CP/M RMAC ASSEM 1.1 #009 WDRIVES.ASM 006D 0000 Dw FdLgin ;; 006F 0000 Dw FdInit ;; 0071 08 Db Inch5+Unit0+DoublD ;; $FdXsl 0072 00 Db 0 ;; If Min96 FlA: Dw 0 ;; No trans table Else 0073 0000 FlD: Dw 0 Endif 0075 0000000000 Db 0,0,0,0,0,0,0,0,0 ;; 007E 00 Db 0 ;; Mediaflag 007F 4000 Dw F596D ;; Address to DPB 0081 FEFF Dw 0FFFEh ;; Checksum vector set by GENCPM 0083 FEFF Dw 0FFFEh ;; Alloc vector set by GENCPM 0085 FEFFFFFF Dw 0FFFEh,0FFFFh ;; Let GENCPM setup 0089 FEFF Dw 0FFFEh ;; DirBcb, DtaBcb, Hash 008B 00 Db 0 ;; Hash bank. Endif If M8 Or Jet8  ; Define 8" 1x77x26x128, 64 entries (IBM). Unit D:/ I: Dw FdWrit ;; Dw FdRead ;; Dw FdLgin ;; Dw FdInit ;; Db Inch8+Unit0+SinglD ;; Db 0 ;; If M8 FlD: Dw Trans ;; Trans table Else FlI: Dw Trans ;; Trans table Endif Db 0,0,0,0,0,0,0,0,0 ;; Db 0 ;; Mediaflag Dw F8S ;; Address to DPB Dw 0FFFEh ;; Checksum vector set by GENCPM Dw 0FFFEh ;; Alloc vector set by GENCPM Dw 0FFFEh,0FFFFh ;; Let GENCPM setup Dw 0FFFEh ;; DirBcb, DtaBcb, Hash Db 0 ;; Hash bank. Cseg Trans: Db 1,7,13,19,25,5,11,17,23,3,9,15,21 ; Db 2,8,14,20,26,6,12,18,24,4,10,16,22 ; Endif Cseg If M8 Or Jet8 ; DPB for 8" 2x77x8x1024, 256 entries. F8D: Dw 64 ; Number of logical sect/track Db 4,0Fh ; Blockshift and mask Db 0 ; Extent mask Dw 607 ; Max blocknumber Dw 256-1 ; 256 Directory entries Db 0F0h,0 ; Alloc vector to directory Dw 256/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 8 ; No. of logical sectors/phys. sector. CP/M RMAC ASSEM 1.1 #010 WDRIVES.ASM Db 22 ; Read time out Db 19 ; Write time out Db -1 ; Double sided Db Verify ; Verify after write  Db Rate0 ; Step rate Db Inch8+DoublD ; Boot select Db 0,0,0,0,0,0 ; Dummies ; DPB for 8" 1x77x26x128, 64 entries. (IBM) F8S: Dw 26 ; No. of logical sectors/track. Db 3,7 ; Blockshift and mask Db 0 ; Extent mask Dw 242 ; Max blocknumber Dw 64-1 ; 64 Directory entries Db 0C0h,0 ; Alloc vector to directory Dw 64/4 ; Checksum size Dw 2 ; Number of offset tracks Db 0 ; Physical sector size Db 0 ; Physical sector shift mask. Db 0 ; Floppy Db 1 ; No. of logical sectors/phys. sector. Db 22 ; Read time out Db 19 ; Write time out Db 0 ; Single sided Db Verify ; Verify after write H Db Rate0 ; Step rate Db Inch8+SinglD ; Boot select Db 0,0,0,0,0,0 ; Dummies Endif If M5 ; DPB for 5.25" 2x77x8x1024, 256 entries. 0021 4000 F5Max: Dw 64 ; No. of logical sectors/track. 0023 040F Db 4,0Fh ; Blockshift and mask 0025 00 Db 0 ; Extent mask 0026 5F02 Dw 607 ; Max blocknumber 0028 FF00 Dw 256-1 ; 256 Directory entries 002A F000 Db 0F0h,0 ; Alloc vector to directory 002C 4000 Dw 256/4 ; Checksum size 002E 0200 Dw 2 ; Number of offset tracks 0030 00 Db 0 ; Physical sector size 0031 00 Db 0 ; Physical sector shift mask. 0032 00 Db 0 ; Floppy 0033 08 Db 8 ; No. of logical sectors/phys. sector. 0034 16 Db 22 ; Read time out 0035 13 Db 19 ; Write time out 0036 FF Db -1 ; Double sided 0037 FF  Db Verify ; Verify after write 0038 00 Db Rate0 ; Step rate 0039 C8 Db Inch5+DoublD+11000000b ; Boot select 003A 0000000000 Db 0,0,0,0,0,0 ; Dummies Endif If Min96 Or SuperJet Or M5 ; DPB for 5.25" 2x80x5x1024, 128 entries. 0040 2800 F596D: Dw 40 ; No. of logical sectors/track. 0042 040F Db 4,0Fh ; Blockshift and mask 0044 00 Db 0 ; Extent mask 0045 8A01 Dw 394 ; Max blocknumber 0047 7F00 Dw 128-1 ; 128 Directory entries 0049 C000 Db 0C0h,0 ; Alloc vector to directory CP/M RMAC ASSEM 1.1 #011 WDRIVES.ASM 004B 2000 Dw 128/4 ; Checksum size 004D 0200 Dw 2 ; Number of offset tracks 004F 00 Db 0 ; Physical sector size 0050 00 Db 0 ; Physical sector shift mask. 0051 00 Db 0 ; Floppy 0052 08 Db 8 ; No. of logical sectors/phys. sector. 0053 16  Db 22 ; Read time out 0054 13 Db 19 ; Write time out 0055 FF Db -1 ; Double sided 0056 FF Db Verify ; Verify after write 0057 00 Db Rate0 ; Step rate 0058 08 Db Inch5+DoublD ; Boot select 0059 0000000000 Db 0,0,0,0,0,0 ; Dummies Endif If Ro204 ; Winchester: Rodime 204 SIGN1 Equ '2' If Adaptec SIGN2 Equ '3' Else Sign2 Equ '2' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 5714 ; MAX BLOCKNUMMER Else Dw 5396 Endif Dw 1024-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-65 ; - " - Lbyte Db 255-8 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-132 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track.  Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 5799-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 5477-(Reduce/2) Endif Dw 1024-1 ; DIR. ENTRIES CP/M RMAC ASSEM 1.1 #012 WDRIVES.ASM Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1271 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-65 ; - " - Lbyte Db 2I55-8 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-132 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If Nec5126 ; Winchester: Nec 5126 0032 = SIGN1 Equ '2' 0030 = SIGN2 Equ '0' 005F 4800 WIN0: Dw LSecPerTrk ; No of logical sectors/track. 0061 040F Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) 0063 00 Db 0 ; EXTENT MASK If Adaptec 0064 5513 Dw 4949 ; MAX BLOCKNUMMER Else Dw 4675 ; Endif 0066 FF03 Dw 1024-1 ; DIR. ENTRIES 0068 FFFF Db 0FFH,0FFH ; ALLOC VECTOR TO DIR 006A 0080 Dw 8000H ; CHECKSUM SIZE (none) 006C 0100 Dw 1 ; OFFSET TRACKS 006E 00 Db 0 ; Phys. sector size 006F 00 Db 0 ; Phys. sector shift mask. 0070 01 Db 1 ; Winchester 1st. part. 0071 04 Db 4 ; No. of logical sector/phys. sector 0072 32 Db 50 ; Read time out 0073 13 Db 19 ; Write time out 0074 FD Db 255-Leav ; Interleav (Inv) 0075 E8 Db 255-ReStep ; Retry & Buff step option 0076 FD Db 255-2 ; No of cylinders Hbyte If Adaptec 0077 D4 Db 255-43 ; - " - Lbyte Else Db 255-76 Endif 0078 FB Db 255-4 ; No of heads. 0079 FF Db 255-0 ; Red. write cyl Hbyte 007A FF Db 255-0 ; - " - Lbyte 007B FF Db 255-0 ; Write precomp. cyl Hbyte 007C FF Db 255-0 ; - " - Lbyte 007D F4 Db 255-11 ; ECC 007E 4800 WIN1: Dw LSecPerTrk ; No. of logical sectors/track. 0080 040F Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) 0082 00 Db 0 ; EXTENT MASK CP/M RMAC ASSEM 1.1 #013 WDRIVES.ASM If Adaptec 0083 9913 Dw 5035-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 5315-(Reduce/2) Endif 0085 FF03 Dw 1024-1 ; DIR. ENTRIES 0087 FFFF Db 0FFH,0FFH ; ALLOC VECTOR TO DIR 0089 0080 Dw 8000H ; CHECKSUM SIZE (none) 008B B104 Dw 1201 ; OFFSET TRACK 008D 00 Db 0 ; PHYS. SECTOR SIZE 008E 00 Db 0 ; PHYS. SECTOR SHIfT MASK 008F 02 Db 2 ; Winchester 2nd part. 0090 04 Db 4 ; No of logical sectors/phys. sector 0091 32 Db 50 ; Read time out 0092 13 Db 19 ; Write time out 0093 FD Db 255-Leav ; Interleav (Inv) 0094 E8 Db 255-ReStep ; Retry & Buff step option 0095 FD Db 255-2 ; No of cylinders Hbyte If Adaptec 0096 D4 Db 255-43 ; - " - Lbyte Else  Db 255-76 Endif 0097 FB Db 255-4 ; No. of heads. 0098 FF Db 255-0 ; Red. write cyl Hbyte 0099 FF Db 255-0 ; - " - Lbyte 009A FF Db 255-0 ; Write precomp. cyl Hbyte 009B FF Db 255-0 ; - " - Lbyte 009C F4 Db 255-11 ; ECC Endif If Ro204E ; Winchester: Rodime 204 E SIGN1 Equ '4' If Adaptec SIGN2 Equ '6' Else Sign2 Equ '3' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 5624 ; MAX BLOCKNUMMER Else Dw 5311 Endif Dw 2048-1 ; DIR. ENTRIES  Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte Db 255-128 ; - " - Lbyte Db 255-8 ; No of heads. CP/M RMAC ASSEM 1.1 #014 WDRIVES.ASM Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC I WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 5873-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 5547-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 2501 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-2 ; No of cylinders Hbyte Db 255-128 ; - " - Lbyte Db 255-8 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If Ro352 ; Winchester: Rodime 352 SIGN1 Equ '1' If Adaptec SIGN2 Equ '1' Else Sign2 Equ '0' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 4,0FH ; BLOCK SHIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 2699 ; MAX BLOCKNUMMER Else Dw 2549 Endif Dw ENT-1 ; DIR. ENTRIES Db 0FFH,AL1 ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out CP/M RMAC ASSEM 1.1 #015 WDRIVES.ASM Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-50 ; - " - Lbyte Db 255-4 ; No of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 4,0FH ; BLOCK SKIfT AND MASK (size = 2K) Db 0 ; EXTENT MASK If Adaptec Dw 2784-(Reduce/2) ; MAX BLOCKNUMBER Else Dw 2629-(Reduce/2) Endif Dw ENT-1 ; DIR. ENTRIES Db 0FFH,AL1 ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 601 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-1 ; No of cylinders Hbyte Db 255-50 ; - " - Lbyte Db 255-4 ; No. of heads. Db 255-0 ; Red. write cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-0 ; Write precomp. cyl Hbyte Db 255-0 ; - " - Lbyte Db 255-11 ; ECC Endif If XT1065 ; Winchester: Maxtor XT-1065 SIGN1 Equ '5' If Adaptec SIGN2 Equ '8' Else Sign2 Equ '5' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7199 ; MAX BLOCKNUMMER Else Dw 6799 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHJECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size CP/M RMAC ASSEM 1.1 #016 WDRIVES.ASM Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-150 ; - " - Lbyte Db 255-7 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31  ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7239-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 6837-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 3201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-150 ; - " - Lbyte Db 255-7 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-152 ; - " - Lbyte Db 255-11 ; ECC Endif If XT1085 ; Winchester: Maxtor XT-1085 If Adaptec SIGN1 Equ '7' SIGN2 Equ '3' Else Sign1 Equ '6' Sign2 Equ '9' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 8999 ; MAX BLOCKNUMMER Else CP/M RMAC ASSEM 1.1 #017 WDRIVES.ASM Dw 8499 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-4 ; No of cylinders Hbyte Db 255-0 ; - " - Lbyte Db 255-8 ; No of heads. Db 255-4 ; Red. write cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-4 ; Write precomp. cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 9410-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 8887-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 4001 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-4 ; No of cylinders Hbyte Db 255-0 ; - " - Lbyte Db 255-8 ; No. of heads. Db 255-4 ;J Red. write cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-4 ; Write precomp. cyl Hbyte Db 255-2 ; - " - Lbyte Db 255-11 ; ECC Endif If CDC66 ; Winchester: CDC 9415-66 SIGN1 Equ '5' If Adaptec SIGN2 Equ '8' Else Sign2 Equ '5' Endif CP/M RMAC ASSEM 1.1 #018 WDRIVES.ASM WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7199 ; MAX BLOCKNUMMER Else Dw 6799 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-7 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Obs Db 255-159 ; - " - Lbyte Obs Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 7349-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 6941-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 3201 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-7 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-11 ; ECC Endif If CDC86 ; Winchester: CDC 9415-86 SIGN1 Equ '7' CP/M RMAC ASSEM 1.1 #019 WDRIVES.ASM If Adaptec SIGN2 Equ '5' Else Sign2 Equ '1' Endif WIN0: Dw LSecPerTrk ; No of logical sectors/track. Db 5,31 ; BLOCK SHIfT AND MASK (size = 4K) Db 1 ; EXTENT MASK If Adaptec Dw 9224 ; MAX BLOCKNUMMER Else Dw 8711 Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 1 ; OFFSET TRACKS Db 0 ; Phys. sector size Db 0 ; Phys. sector shift mask. Db 1 ; Winchester 1st. part. Db 4 ; No. of logical sector/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-9 ; No of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-159 ; - " - Lbyte Db 255-11 ; ECC WIN1: Dw LSecPerTrk ; No. of logical sectors/track. Db 5,31 ; BLOCK SKIfT AND MASK (size = 4K) K Db 1 ; EXTENT MASK If Adaptec Dw 9482-(Reduce/4) ; MAX BLOCKNUMBER Else Dw 8955-(Reduce/4) Endif Dw 2048-1 ; DIR. ENTRIES Db 0FFH,0FFH ; ALLOC VECTOR TO DIR Dw 8000H ; CHECKSUM SIZE (none) Dw 4101 ; OFFSET TRACK Db 0 ; PHYS. SECTOR SIZE Db 0 ; PHYS. SECTOR SHIfT MASK Db 2 ; Winchester 2nd part. Db 4 ; No of logical sectors/phys. sector Db 50 ; Read time out Db 19 ; Write time out Db 255-Leav ; Interleav (Inv) Db 255-ReStep ; Retry & Buff step option Db 255-3 ; No of cylinders Hbyte Db 255-157 ; - " - Lbyte Db 255-9 ; No. of heads. Db 255-3 ; Red. write cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-3 ; Write precomp. cyl Hbyte Db 255-157 ; - " - Lbyte Db 255-11 ; ECC Endif CP/M RMAC ASSEM 1.1 #020 WDRIVES.ASM Dseg 008C 38302E2035?Titel: Db '80. ',Sign,'"-floppy ' If M8 Else If M5 009A 312E32204D Db '1.2 MByte ' Else Db '800 KByte ' Endif Endif 00A4 3178323020 Db Sign0,'x',Sign1,Sign2,' MBytes winchester ' If Adaptec 00BB 41 Db 'A' Else Db 'X' Endif 00BC 2E0D0A00 Db '.',13,10,0 00C0 End U`TED$Q%Q2@COMMO`Mg@%@b @W@@) %d@*@xM2(0`HMA7}А    oC0p0!io8"d &'C(bx e9qe9 !\ #Q 2=US# =55>4PQ#M ]I%R4SM%9%R4JUԑPQ#D`]]I%R4 USU#E ]%9%Q4NUSi!v"/!Q/+>c!K-6*/K>XG!+>yC!Q/+>c!+Q/>r–!}o|g}ʖ!#"/!/–!/ʖ!/+>c!/ͷ~g"B,U"G-!,,> c!o0ͷX:F-!,,> c!q0ͷ~*G-w#w:F-X!s0͡!F-6*G-*G-^#V#)))"I-*B,*G-^#V))W+"B,*B,>og"@,:F-f!,,> c!y0ͷ~!{0!+Q/>r2K-*I-w#w2P/>2O/2N/!/(,>t!"N-:F-X!D,LG!),>y :#!#6!Q/D,>_:O/!N/:N/2O/2N/!P/4!}0!0*L-#"L-!0A !/*!/>X!/>Xt!D,KLG!.,>y:O/!N/f:N/2O/2N/!/>X!.,!,@!D,KL(,tî!N/4!,/>c!0!0!0n !N-~#!0̓ ã!0ͬ!D,/,>c!0~U!9"0:#Z!#6!#"/r*/>$Gt!##>Gt!#0,>Gt!#6!#6!#"0!0T!F-6!"#!D,6!06:0}͐3>!D,ͧd*0!F-6!#6*##"#*# |.!"0}20!0>!#*0"0!0U!#"0!0+!#*06*0 "0!04í!"#:K+.!+6:# :# :#.~!#*#~20:0 20:0Q~:0Þ:K-z"/!0Ur"/*/ 3,>Gt!0#!D,6,> c!0ͷ~Ͳ"0~# ¦*0^#V"0*0^#V"0͕!1"1!216>261251:!12:1::1!51!!1:51og~271:21!216{:71!61281*0:61o:81OLG!1>c:81og>og}281*0:81ogW"0*0:81og####"0*0*0W*00>c*0";1!;1ͷ~>291!1n&}2=1:=1!91*1:91og"1*1~og |*1>ߦw*1~?*16_*1~@*16`!914å*0++*0)"1*11>_*0^#V"31*0^#V#r+s*1*0*0^#V)))s#r*0:61_L*0*0^#V)))>t*0*0^#V)))w#w!31#`*0*31)))^#V1j`*0*0^#V)))"1*1!1>Gt*0*31)))"1*1*1>Gt*31+"31*0*31)))^#V1j!31#T*1"1*0*31)))"1*1*1>Gt*31+"31*11>Gt:71%^}2C1:C1!A1$ *0:A1_LG!>1>t!0>1xy!0>1xy !B14:A1!!1:B1ogw!0>1xy :B12!1!A14ì*00>c*0"D1!D1ͷ~^#V"F1*F1^#V> ͍!H1 *!H1> XÓ1~# s !9"2!1"1!16*1w#w*1ng | *1KLG!1>yº !1**1~ogQ1~og)1^#V*1^#V#r+sH !11>c !1*>22*1~ogQ1~Y !11xyK !24H :2K !1!1> !1* *1*1^#Vͯ1>_ *1~ogQ1~ !1*{ !1*!11xy !1*é !1**1~ogQ1~ !1* *2:1 !16!"1*1n&"1*1"1' *1#"1*1*1W7 *1*1>Ó*1~og |c !1>ߦw !1~?t !16_ !1~@‚ !16`Y2 ~# ˆ *_2^#V"e2*c2^#V"g2!"2*[2^#V"2*2*2W *]2*2ͯ"2!2 :2 *e2*2)))~# *g2^#V#*e2*2)))s#rc *e2*2)))^#V"2*g2*2))~#K *g2*2))^#V"2% *g2^#V#*g2*2))s#r*g2^#V#r+s*a2^#V*g2^#VW !i272>!c!2ͷ~*2+|´ *Y2^#VO"2þ *Y2^#V"2*2*g2++*g2^#V))s#r*g2*g2^#V))w#w*2#"2ô 2~#  *26*2LG!X2>yC *2"3*3#~>!3w:3og2~C :2 !26*e2^#V#"3!3"323!3> *3++| !"3Ñ *3>og"3*3:3og)2s#r!34d !" 3*e2^#V" 323*2"3!3"3* 3* 3W_!34:3og)2^#V" 3*e2*3)))^#V"3*2*3j/*3+" 3* 3* 3"3!36\*3*2jY*3#" 3* 3* 3W"3!36\Û :3o* 3"3u* 3"3*e2*3)))^#V"3*2*3jʛ*26*3*2s#r3 ~# ±*3^#V"#3*!3^#V"%3! ÷>2.3*3~ʟ*34*3~og"3!3A !/3*!/3>XG!3>y.!/3>X3t!/3>XG!3>y[!/3>X3t*3!3>}23:3ʐ!/3>S*3:3<_Lt*3"3!3ö*33>_*3"3!3!;3"93!3*3>!t!<3"53!L33>Gt!Q33>Gt!"'32.3*'3*#3^#VW*'3#"'3*#3*'3)))^#V!<3>p!")3*)3 |*53+*)3"73*73~ ]Æ*73~_n*736?|*73~`|*736@*)3#")38*#3*'3)))!M3>Gt*#3*'3)))^#V")32-3!)3~#ʖ:-3 ͟!<33>t!M33>t2-3!-34*%3++*)3))^#V"+3:,31!Q3:-3ogͯ3>Gt*+3O"+3M!Q3:-3ogͯ3>Gt!3A !/3*!/3>S!L3:-3ogͯ>t*%3*)3))^#V")3ø͟!.34*3~!.3!t:-3ogͯ}!;3w!;3~w*93:;3=_L3t*93!3>_!3^#V"<:F4!F46*<KLG!H<>y+!E46ð!E46!4"$Gt!'4I<>Gt!*46!>46z"!4*<@*<"r2<:E4:<>2<>2<*Gt!^<<xy;!<8!<5!<͛#E!<͛!<5:22%^}2<:!4*<@*<"!4*<@*<"2<*t!<͆!<4!<͆^#V^#V  $ "/  Later CP/M or MP/M Version Required$*#=**#={ozgY|g}o!\!l!ÍÝ3>Ý!*3>K* !*   >    !"#$%(^#V^#VF3O3*# 72gl*<"?'w#-!9~sG~#s4! 9~.Y+60e0e6 #M+r>o&9y>o&90w+Š6./G! >0 >-3T]))LiO>`G>0 <  DM0 > Ew#E~#X~#W #Ý!9Oo>gy~#o>gxGGtwF#"WObk++~+ y~#/~!>)< D=M)6ɯo>g{ozg!dÄlmnpr Conversion2!Ä*%=|^#V"%=###^#V#N#Fxʿ #~ò*%=|^#V#N#F!9yx"%=:L# !9!#{z#  !!9:]#O!^# {#z!]#5#}OD*#=~r##~#fo9!NÄVWXZ\ Free Space Exhausted##^#V#{_zW;{_zW>4z˜{##^#V# ##s#rs#r#s#r+++~sw#r####}*#=}|5*{z5+F+N+V+5^{;{z;}|;{i`~sw#r##q#p i`N#F#^#V~;q4#p+i`##s#rA"]" FREE Request Out-of-Range$ Free Space Overwrite$GKҜMbkÜiFhNhN#Fh^#V"#y2#xүi&ͩ x>!J#{#z*#*# xyxM_!^#VͤG>(Iỳ>)I|*<|6<ͤͶò">,IG> _O! O! O!0:IIWWG|e}e ڐdԒ ͒ڝÔxWN #~Iæ!wͤ*=!9{_z{ G>#I*=>=^#V#q>: >?I!oͤͤ>=I^#V|A}8.))ä#F>A> #\~ >.~ =M^#V# File: Traceback: ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLSTBADG!]#~8  " Condition Stack Overflow$4Ox!< w#s#r#s#r!9!^# s#r!]#N!< +++++q #{Š #zʏ ++~q ++!]#5!~# ž Ú !]#N!< +++++¹ #~# +{ #z ++~ù #^#V=!L#~9!5:L#_!M#^#V"J#~#.~# !*#)))))# )| !*~#|}*#"#:L#*J#~#w# F!*#{ `! d!!#"#Ö!Copyright (c) 1980 Digital Research, v1.3 !"!="="%=2]#2L#*'= !"=q#p##}o"#=*}o|!""+w+w+r+s4w#w#s#r<2)=++*!=s#r"!=*=#"=*=DM!!=x~¨"#~+¨"+F+Nq#p*=+"=ʣ"Ҧ"=Y"!+~O~#~G!>w!/x"yʞ" >O6# x" h"=ɯ ~#fo++"!=~#"*!="²""""  Insufficient Memory$ Invalid I/O List End of Execution$#dd(Copyright (c) 1980 Digital Research V1.3MXList SYMd$PlPRINTER busy XREF 1.3 no SYM file no PRN file CP/M PRNXRFABORTED. V́ + 1@+>L  FG1"z*QS cE5T @///,,D,B,G-,Q/D,D,L-,D,D,N-P-L-N-P-G-@,I-P/O/Q/G-I-D,000//D,symbol table overflow ' invalid SYM file format  { *$'symbol table reference overflow 22i2 0# +333lXRF.XRF make error  '.XRF close error .XRF write error <<<_<<b 2d8 dy0 0(O>02 8  y0 0(O0O "1ѧR|2 (J/N)? J(j(N( n(O˯2 ((  :J{|W_0e. !0 )  |^#V#><*^VR89 *^VR8)*^VR"*^VR"0*+"(0(Oy(0~#O!5 !~O#N#F#x( ~#~# `i!W[ (Y/N)? Y(y(N( n(O˯2 ((  :Y'd ;@B'd 1986-04-25. PSW, PH Ver A6 14. - Jet80 diskette and winchester format utility Ver. A6 (Bios Rev C-G) +A͒:0064Requires CP/M Plus Version 3.0 to execute. üh,!g,6M:8r͒:8e1R8(P&R(FR>(>29 Requires the BIOS revision F to execute. ü>2 8 There is nothing to format in a WorkStation. ü1!~ʝ#~ (/([#~˯C What's the time (HH:MM)g,i>ʝ%Ϳ'82i,##`Ϳ'82j,g,h>T2 Wrong input, try again.>- :(Local d  Drive to format? >ʼ~˯A8QҤ2r--:r-A_12s- "t-88Requested drive does not exist on this system. Ý~(q žSorry. This logical unit is the second winchester-unit. ÝYou cannot format a RamDisk. Ý: 8WARNING! New Bios revision, but might work anyway. ~ >ww>2w>6w~2w-~G>_S~-NFN|(n fF(<"x-}2-~N_P`hSz-{2-Q<:02-y"|- Drive: :r-O: (sel::s-0O) Capacity: *x-:w-()Kz-K|-4 kBytes 2-> Confirm formatting of this diskette with YES (or D for drive params.) >ʝ~˯D $~˯Y#~˯E#~˯S:s-[)͇+͇+͇+>G (0 Drive not ready operation aborted  w(2 Cannot format writeprotected drive!  >b+W(O(O !H&+O(| 2 Cannot format hard sectored diskette  -->2-2m-!++~Xm+¯ 2p-(:- 8.2- Do You want to continue >-~ !m-4!-< :-G=2m-2-:m-~m+¯ ů2p-͕(:- 8.2- Do You want to continue >-~ !m-5:- , Diskette sucessfully formatted Ò  Diskette can't be formatted $$Ò  Seek error, operation aborted >2-$$Ý:ʒ **** WINCHESTER DRIVE CHARACTERISTICS ****  Controller ...............: Adaptec ..Xebec Formatted capacity (KBytes) ~/W~/_S-~/O2-GU:(Z>2e,c  Number of cylinders ........*-.4 Number of heads ............g:-o.4 Physical sectorsize ........o:f,g.4 Physical select ................:s-0o(1 Controller I.D .................:s-08  Reduce Write Cylinder ......~/g~/o.4 Write Precomp Cylinder .....~/g~/o.4 Sector Interleave Factor ...~/&o.4---1~(G:(@ You have to boot from floppy to format a winchester. Ý2-2-2-2- Confirm formatting of this winchester drive with YES ! >ʝ~˯Y#~˯E#~˯S:ʀ!T."-!"-"L."N."P."R.2-2-2- Do you want to specify bad sectors? (Y)>(~˯N Enter Cyl/Head/Byte (like "123,2,1234") and terminate list with "E(nd)"  Bad spot to be avoided:> _6'¿ڿ!-6#z/w#{/w#' z8x#{/2-' m0k!-6#6#j 8!z/w#{/ws:- !-~/G#~/O!5 !6 !!-z/w#{/ws:- !-4~# (˯E(! Wrong input, try again.ì!-4:-OK-:-OGB0{2-|2-}2-:s-*t-c2>%5:s-*t-S5(>  ERROR DURING MODE SELECT ! CHECK WDRIVES.ASM ! Ý Pass :-K: Formatting: (Be patient) ig,2k,:-(*-|/O}/GCJ.H.7*t-:s-4(P3/$ !~( O#:-M.-M  Wrong in defect list, try again.il,2p, Completed. :-o:-g:-_c sectors in next operation. :n,ͫ'_B<:o,ͫ'o& <:p,ͫ'o0$ :i,ͫ'_B<:j,ͫ'o& <:k,ͫ'o0$ RB!<:˯T(3Take's about 4 minute|(s-kFinished not later then :o,'g`:n,8 <'|`'g͒':͒' Verifying.: 2-2-2-2-2-2-dŸ!-4 :-og4 bad sector(s). :-K Soft error(s). :-(K Slipovers.M Total numbers of bad sectors: :-o&4:-(- (Auto rejected sectors::-o&4 )4:s-*t-c2>%5 Erasing test data !776!"-"-!7:-G:-O:-!XP72 :-g:-oP|2-}2-0!-43!(#( ͺ+!ö:-ʝ Second Winchester unit must be reduced with at least :-O4 Kbytes. .-Ý:-O:-G:-6!-43/!(# !-5/2-/2-G/2-O:-6m!-53/2-!(# :- /2-/2-G/2-O:-!-5(g Fatal hardware error. Reboot and try again, if no success Your system requires service. $$ͷs!-4 +4 +4!-5!L.8 8 8 (I*-BDM[-!*-+!-*-"-*-"-!-4!-4+!-47!-F#NfnB!-~!-F#NfnB Too many bad sectors. Operation aborted. Ý Error.........:3/O0*> *ͺ+- High address..:g/o 4 Middle address:g/o 4 Low address...:g/o 4 Consult Your controller manual for further information. ÝO Do You want a printed list>>2 BAD BLOCKS ON WINCHESTER CylNo Head ByteOffset !L.:-G -2 BlockNo::-o:-g:-_ c Cyl/Head/Byte:!-  Error::-K ~/_~/g~/oc  &~/o4 ~/W~/_~/g~/o 0 c 7>!++>>>g (:s-2|,~2" Formatting (Be patient) l>w\ͽ:z,/2":{,/2":|,/2"l\ Completed. 2-2u,2v,!"s,>2"*-[s,| } ~2" Winchester verified with :-og4 bad track(s). :-ʝ Formatting alternate tracks. >2q,2r,!},:q,O ~2"#~2"#~2"K-:-_:r,G+:e,O{/2w,|/2x,}/2y,:r,<2r,ͽlT:w,T:x,T:y,\ :q,!-*<2q,æ Second winchester unit must be reduced with at least :r,=OGW:e,_:f,O4 KBytes. l>w\Ý!">lw"!" 6l!"\^~2"~2"  Verifying: Cylinder*s, 4 Head:u,og 4P:u,!-<2u,2u,*s,#"s,ɯ2v,Ks,:-_W:u,OG :e,OG"S:v,OG 0}/2"|/2"{!s-/2"l/°!"\:v,yT!"pT!~#^#V#ȹ 3 [ q      !!!9!O!]!!!" F"!W""m"0"1"2""NO ERROR OCCURED.$NO INDEX SIGNAL FROM DRIVE.$NO SEEK COMPLETE SIGNAL FROM DRIVE.$WRITE FAULT SIGNAL RECEIVED FROM DRIVE.$DISK DRIVE NOT READY.$TRACK 00 NOT FOUND.$DISK DRIVE IS SEEKING.$ID FIELD READ ERROR.$UNCORRECTABLE DATA ERROR IN THE DATA FIELD.$SECTOR ADDRESS MARK NOT FOUND.$TARGET SECTOR NOT FOUND.$SEEK ERROR.$CORRECTABLE DATA ERROR.$TRACK IS FLAGGED BAD.$FORMAT ERROR.$CONTROLLER DETECTED A DIRECT ACCESS TO AN ALTERNATE TRACK.$DESIGNED ALTERNATE TRACK IS ALREADY ASSIGNED TO ANOTHER DEFECTIVE TRACK.$ASSIGNED ALTERNATE TRACK NOT FOUND.$ALTERNATE AND DEFECTIVE TRACK ADDRESSES POINT TO THE SAME TRACK.$INVALID COMMAND.$ILLEGAL DISK ADDRESS.$INVALID PARAMETER.$RAM ERROR.$PROGRAM MEMORY CHECKSUM ERROR.$ECC POLYNOMIAL ERROR.$UNKNOWN ERROR.$#`iG>~& #3N &(EN͓! !3N/N8=(("L #~#OMdMÐM& ^ >~& #!>dM(@M()M(6M(M(M( M(8ENL*e#"e`i!*e+"e| !a" a;M (> > >7y (#~+; ;M ( > > S3ay#~  ( (>>82M^V{(/+###N 80(W88 ɯ=!Jd M(87|`G}iOy#N W8y#N W8SͱS;a!b"[f0OO8.828B8u 8 0 O!KO ^#VP Q QOQ* x  ***** DISKETTE DRIVE CHARACTERISTICS ***** Logical unit.........:r-O:- Physical bus.........:s-82q- 5"- Physical select.......:s-0O- Storage Capacity..*x-:w-()Kz-K|-.4- Number of sides.......:w-1( - Number of tracks..*x-.4- Number of sectors.*z-.4- Sectorsize........*|-.4- First sector number...~0O- Hard sectorskewingn&.4- Density...............D:s-o(S- Step-rate (ms).......F:s-!S, ![,##~O#~O---͛'0O:O__'_#'####?~:ȧ0 ?~7/: ,0? 0MD)8)8 8 )8 O 8# Writing͘+:m-O:-G:p-[-*-qwG:s-!++>m+͇+(!2- Write track error !-4F!p-4F Verifying͘+:p-<2-!(*"*2o-2-!o-4**~#"**|-+"+!++>!-m+B)2-:-(  N  *** Read error at sector >2-**+~K-!-4:o-!-¼(F!p-4F•(͏*:s-o½*!7^"-*|-<^"-!7>NP͓+ ͓+>͓+>w#F>N͓+~2n->2o- ͓+>͓+>w###**~#"*w#:-w#>w#>N͓+ ͓+>͓+>w#:}-O:|-G  >͓+ >w#F>N͓+!n-~4!o-~4!-8>NX+:-G!*~wN(*S*݆8<ݾ <!a7"-:*|-"-!7(>͓+͓+>w#>͓+~2n->2o-͓+>w###**~#"*w#:-w#>w# >͓+͓+>w#:}-O:|-G  >͓+ >w#>͓+!n-4!o-~4!-8>wT]w(  8>N w# Track :m-K Side :p-K~O#F#( y7χ y7χy7(Ӈ!!,!,~O#~U~檩˿#kxxmt!92$`tkeuggzp|oj .3.61015.6122030~-V< >_^#VO=8>U(O+:V( V2V2\V .DV ~8>#^#VͻVea((+U}Aa|Aa8>U}V|U#^#VNKe p+q+:eNwyO(8aî7}Aa|AaIllegal Construct 8aî7 =Av ҊW>8aֿ8a!"S!S*Ve"e#>ͲR!Gf2X*peͮ7*teͮ7XT( ,S>X!xe!e^#V#z(>8aX~8a#~8a###͖S!>2f~< ###:.f ##^#V!+ͲR.D >òRͲR~# òR*#f|(>ͲR ~# IJR>ͲR^#V*e|>IJR:(_*Dh|(>ͲRq`!Dh~#ͲR>ͲR:e*eͲRͮ7>ͲR*hR*e[hR}o!R"h\ͲR-VX=A~ͲR#~ͲR#~++òR*3diS YR<#"Y*Y+"Y|!i^#V#" Y~:ď[:2d!`ԏ[f*eYY*peY|Y*teY|Y!Yͭ\*le|( K.dBYYX*Y+YY>!f[Error(s) Detected.Program Bytes. Data Bytes.Absolute Bytes.Symbols Detected.  > >2> í\Symbol Table:!Ya:`ob]8}2@Z!*a6!f"-a>2XY͏[:@ZGY( \ZBZx*-a> +(#6qa!f"-a:@ZG=A#^#V !*a6:.fO(###~<  ~#fo>_+[-a.D(> S-aXY###^#Vbk)DM͓!r+sbk6 r+sCross Reference:!Za:`o&]8}2[!*a6!f"-a>2XY͏[YfS-a\Z###^#V^w#Vw#w#z(*-a:[G~##('++>1> S-aBZ!f> w#w#w#x 0>qa:`22d͟[Q :-d*e#"e:#_WR/]pit\6 #6-#6 #ͭ\:-dF\!m\ͭ\!f>16 #6 #6!pi:]̐!^Fw!^Nw:](!]F6!^N6ͩ]!~(V2850701PSW!W2!2ͨ2͊26.6 56 56!22W2w'ww-w .!26#!26.86.~-w6wpq66r6 .56!2~/!:3ɐ I.D. CRC Error Uncorrectable data error I.D. Address mark not found Data address mark not found Record not found Seek error Data check in no retry mode Ecc error during verify Interleave error Unformatted or bad format on winchester ! Use FORMATER ! Self test failed Defective track (media error) Illegal block address Volume overflow Invalid logical unit No message for this error!256͊2!2~/w~-wp0 56/2Q5!26.~-w6666!O556#~25#5~#ͷ5*5ELhaK5y "5K5y "5:5!5 ~25ͷ5c2!26~-w!556!5~/w#!26.ݶ-wpq6656!26.~-w6wpq6rs6 /56p6&6, 5,('͝6Ͳ6 7O( G 6668($͝6 Ͳ6 7 .666&~&_(~'/_ 7OG~/#.N( 7O.F( 7O 7/_ 7{w&(7{/(~&_(~'/_ 7OG~/#.N( 7O.F( 7O 7/_ 7{w&DIRLBL yd'* !9"1>"#2#:Og}**Ip2~w2i#1#":RͶ :O~!ʫ:<2Ž:"2"x2*# O:ļ:<:G>O*# :<t tIw!/>!/>!*6 #:_#:*Y" Y" Y" >*Y"#####Y"##Y"Y"Yz2*Kg"ɯ22!"*DM6:O* 2~ ~ †:<~:2>2:<** "_?:<2>!/:<}:2* ~b W6 y2> # vwm>2>!/ N *~O²+—">2>!/*:< "~G # p *~w#  :N *8*:*8yO:O*}O= ~ w#P^#V#ɷ{ozg |g}oh:<͉̉O<OBKBK$'-*!*^#V"DD  $$HD@" @@ $B $$H$H$HH$$! HD$D$D@AD HD$!A"  HIT och DIT HIԠ oc DI { progra f| snab oc enke |verf|rin a filer mellan JET-datorer. \verf|ringe ske vi e bildsk{rmskabe so anslute p d seriell printer/Mode portarna \verf|ringe ske blockvi 12 byte pe bloc me kontrollsumm LRC f| varj bloc oc me automatisk kontroll av antal block, hastigheten {r 38400 Baud. HI { programme so arbeta de mottagand datorn. Starta me kommando HIT o mottagn file skal placera p defaul drive elle me 'HI Drive: o filern sk placera p anna driv { default HI skrive kontinuerlig u vilke fi so { unde |verf|rin oc ange vilk file so ha |verf|rt korrekt HI avsluta me CTR C Observer at HI radera ev tidigar file o de ankomme ny me samm namn. Exempel: A>B:HIT B: HIT ( 1.5 ) JET-80 CPM 3.0 Reciving file QQ .SUB Old file deleted. File transferred Reciving file SS .SUB Old file deleted. File transferred Reciving file C .SUB Old file deleted. File transferred Reciving file PROFILE .SUB Old file deleted. File transferred 4 Files transferred No data -- waiting-- Reciving file M80 .COM Old file deleted. File transferred Reciving file M80 .REL Old file deleted. File transferred Reciving file MATH .H Old file deleted. File transferred 7 Files transferred HIT terminated due to operator request 7 Files transferred HIT end .PA DI { programme so arbeta de s{ndand datorn. Starta me kommando 'DI Filnamn' F| filnam g{lle samm synta so PI oc DIR D.v. '? oc '* ka anv{nda so "wildcard" S{ndninge inled me at samtlig file so matcha "Filnamn skrivs DI ka avbryta me CTR C. Exempel: A>B:DIT *.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 Files to be sent: CHARIO .Z80 BOOT .Z80 IOS .Z80 WDRIVES .Z80 FDRIVES .Z80 BIOSKRNL.Z80 No answer -waiting Sending file A:CHARIO .Z80 Exit due to fatal error No FILES transferred 2 Errors DIT end A>B: B>DIT *.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 ---- NO Files --- B>DIT A:*.Z80 DIT ( 1.0 ) JET-80 CP/M 3.0 Files to be sent: BOOT .Z80 IOS .Z80 WDRIVES .Z80 FDRIVES .Z80 BIOSKRNL.Z80 CHARIO .Z80 Sending file A:CHARIO .Z80 File transferd Sending file A:BIOSKRNL.Z80 File transferd Sending file A:FDRIVES .Z80 Exit due to operator request 2 Files transferred DIT end OFFFF ADAPTEC 0000 AL1 0000 CDC66 0000 CDC86 00B8 COMM 0001 CONTR1 0002 CONTR2 0004 CONTR3 0000 DOUBLD FFFF DOUBLS FFFF E512 0200 ENT 0040 F596D 0021 F5MAX 0000 FALSE 0000 FDINIT 0000 FDLGIN 0000 FDREAD 0000 FDWRIT 0050 FLA 0073 FLD 0008 INCH5 00D4 INCH8 0000 JET8 0002 LEAV 0048 LSECPERTRK FFFF M5 0000 M8 0000 MIN96 FFFF NEC5126 0000 NETWORK 0000 RATE0 0001 RATE1 0002 RATE2 0003 RATE3 0024 REDUCE 0017 RESTEP 0000 RO204 0000 RO204E 0000 RO352 0035 SIGN 0031 SIGN0 0032 SIGN1 0030 SIGN2 0020 SINGLD 0000 SINGLS 0000 SUPERJET FFFF TRUE 0000 TWOWINS 0000 UNIT0 0001 UNIT1 0002 UNIT2 0003 UNIT3 FFFF VERIFY 005F WIN0 007E WIN1 000A WINA 002D WINB 0000 WINIT 0000 WINITD 0000 WLGIN 0000 WREAD 0001 WUNIT1 0021 WUNIT2 0002 WUNIT3 0022 WUNIT4 0004 WUNIT5 0024 WUNIT6 0000 WWRIT 0000 XT1065 0000 XT1085 008C ?TITEL 0020 @COMMO 0000 @DTBL HT$0*Z[.^chÅBs6N<v èìqoí|||This area is used as stack by CCP but You can use it for interrupt vectors when CCP not in ram 71!ͭͭ͏>Q>!2"*b2"!!!\"!a"!f"!"!"!"!"!"! "!"~O #x: 2S'". C)x> >2-*|o&~!!2x( >2: <2>2C2> (>22 }ϋ2!"< !fQa>Q!a, ! !W K>QCCP COM Vi@@|CRT LPT CEN GRAPH LPT1 LPT2 ~G#N#sC1m"5:QoQ}{C"E!"! "͂q " S:2 : [* M͂ø ͂͂&>0>0Ms1! 5 ,6 !\~'`8w+~<'`8w+~<'$8 w++4 #~@!{>91:Qk&) ~#fo( ++N^#VQxy!m:(61*2:Q́fQy2"{M21v L:(*[KS"C!^#V#{(++~2 y2+V+^` *$*(**)0ͦ(l | *$*(**)>ܦ| h&)))~& ~ > w & ͏ *"*&)| *"*&) | Ï y2i&) ~#fo{!~2 !~#fo`C C C:2i`#z+n&*&)~#fo~#fo2 2ͭ* ""*""$ ( !"""$*("**$"&*&"(!p}2_!h}2m2Z!d}2<<2!:*GG+!w#Ow### ~w#q# !!d|G!a!aCCP.COM-error. Press to retry CP/M Plus Version 3.0 - Jet-@  @ *E.| !"""S!">:x2x3 8WK>z?؇!O ~7o##~#fo 8WK"|(W! K>2 2  >  > > 0| )}0$_!  y(A!7"*>CRT LPT CEN GRAPH SPOOL LPT1 LPT2 ! # yЇO_! F#N#~#fop |h!~0>_!~(1w#Fyw ~ Wyw W~柲w xxÒ This is a patch area reserved for inplementations of function keys, and other "hacking" in consoleinput Use Bios fOunction 30 (user function 8)͌ ?!(:w 5[!R S*6!6!~6O (*+":vo([RZ >:x2x*[*~#R [S>3!(>#:w 5[!R S >>> ) (y 3 (y= (y >@>P! y 4>8 y24 ] (y, g (y.͊ 0::9(":( (2((( *|: ɯ! >(>!>>(>-/ɯ!> :co(>:e˿2e>W(42*"r!R± SÖ*[R(FR0:vo(>:x˿2x*w#"[R[R *"*#"Ö!>0 5: Ö–5Ö!4~ >#"2*"w!ROSÖ E E (E -)E / /7P!#O E ]2o]2{#1{#P80. 5"-floppy 1.2 MByte 1x20 MBytes winchester A. !j~;0: w!UVwww! 62sW1̈́06gw(6\#~w#~w#~w! ~#fo~w~w#~w#~w sW1̈́0͛( ~ J[:G x͖~CsW1̈́0~ ;͛ J $66*:G x͖~ w>2y{WD~w F6#3 66~: DD ?~w V ͛ *3 ~D !~w V ͷ 3 ͡͡ ˯AIR >/<033O _ W{ ! a~AO !anfͷ!&a BIOS error on : track- (A=abort R=retry I=ignore) S:"3>!*~G >>**#">**#"!>*>NF(90>2~S:> y~Ͱ*#"(>ͰWy> ~~ F8 >C!#  C"! C"!>!2x((:Ͱ>> w(!j~;!~#fo: ͯ( ra!aK :CC*20: wsW1̈́0\: sW1̈́0͛( ~ J}ãsW1̈́0͛ J}>"(*#"ra͡ F6#66> !2!>O O!7" !:W7PɯNF:!0 ) 0 ~=O 0"V ((*#"ra͡ :=23 "( !7.> !2!%>O O!7!UV!~8O Q!!URu t V :0GOB8 y2:! < = :G!U!UV~(0Os r :w: w: www:G!UV~(: :  :  ۯɯ2ww~ȯwn f E H6#~: =_Gn f wO F6w4~ ݖw F>:G!U~( =  wVyO>"S!2! >2: =2}ϋ}$(ϋ y(ϋy(ϋ y(ϋy(ϋӇ6!mnfm N#~U˿~檩˿#aHGg0kxxmt!90$`tkeuggzp|oj  V2850701PSW!!6.6 B B!2w'ww-w .!6#!6.86.ݶ-wpqr B!6.86.ݶ-wpqrB!~/!ɐ I.D. CRC Error Uncorrectable data error I.D. Address mark not found Data address mark not found Record not found Seek error Data check in no retry mode Ecc error during verify Interleave error Unformatted or bad format on winchester ! Use FORMATER ! Self test failed Defective track (media error) Illegal block address Volume overflow Invalid logical unit No message for this errorp6&6, 5,('ͪͿO( G 8($ͪ Ϳ .6&~&_(~'/_ OG~/#.N(O.F(O/_{w&(7{/($I$I$I$I%UUU$"I$I$I "$$B  $ $ @$H@I!@U" "@BHI DH !@  !