IMD 1.15: 15/05/2007 13:54:07 fog mis 013   åååååååååå  åååååååååå  åååååååååå  -FOG/MIS013BDS-C HLP CPMCHAINDOCW DBINDEX DOCDBINDEX1DBFHDBINDEX2DBFDBINDEX3TXTOCC1NDX DOC åOCC1NDX3DBFH'()*+OCC1NDX3FRM!OCC1NDX3TXTK"#$%&CRCKLISTCRC,ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååInvoking BDS C using C.SUB Overview of the BDS C Language System Overview -- C Compiler, Pass 1 Overview -- C Compiler, Pass 2 Overview -- C Linker Overview -- C Librarian Overview -- C Skeleton File Variable Types Braces Variable Accessing ARIESå-1 C Library Special I/O using CIO :Invoking BDS C using C.SUB BDÓ  à maù  bå invokinç eitheò bù thå conventionaì meanó  oò  bù usinç  thå  SUBMIÔ filå C.SUB®  Iæ thå SUBMIÔ filå  ió  used¬  iô  ió engaged as follows -- SUBMIT   C filename wherå  'filename§  ió thå namå oæ 'filename.C'¬  thå filå tï  compile® Notå thaô thå useò ió NOÔ tï tï typå filename.C¬  buô ió jusô tï  typå filename. Aó  executioî  oæ thå twï passeó oæ thå compileò anä  thå  linkeò proceeds¬he source code. The file extension ".C" is NOT assumed for the input file, so saying "FOO" for "FOO.C" would not work. Š If the source file name is preceded by a disk designation, then the input is taken from the specified disk and the oup  thå  useò  wilì bå giveî thå chancå tï aborô processinç  aô variouó  criticaì  pointó  iî  thå procesó bù  thå  executioî  oæ  thå ABORTSU  program®  Iæ  aî  erroò haó occurreä  durinç  thå  previouó processing, ABORT when this program is executeut is also written to that disk. If any errors are detected during CC1, the output file will not be written. In addition to the name of the source file, a few options may also be specified on the command line by preceding the option list withd. :Overview of the BDS C Language System The main components of C are: 4 executable programs, a standard library file, and one skeleton run-time subroutine file. A description of each follows: :Overview -- C Compiler, Pass 1 CC1: Because a dash (-): s causes undeclared identifiers to be implicitly declared as integer variables, wherever possible. hex digit (4-f) sets symbol table size to the specified value (in K bytes); default is 8 (5 for versions x.xT.)  C loads the entire source file into memory in one shot, the compilation is broken up into two phases (not "passes", strictly; The two phases end up taking about 8 passes to actually implement), maximizing the amount of memory available for the s For example, A>cc1 foobar.c -s6 supresses errors for undefined variables and sets symbol table size to 6K bytes; A>cc1 zot.c -e sets symbol table size to 14K bytes. Note that the option list must contain no blanks. A>cc1 b:td.c tource file. CC1, the first half of the compiler, accepts a C source file with any filename and extension (say, "foo.c") and writes out a temporary file (with the same filename and extension ".CCI") containg a symbol table and an encoded form of takes the source file from disk B and writes the .CCI file to disk B (regardless of what the currently logged disk is.) On an 8080, speed is about 12 lines source/sec. :Overview -- C Compiler, Pass 2 CC2: This is the second half of the compile  r. CC2 accepts a ".CCI" file as input, and writes out a ".CRL" file if no errors are detected. (CRL is mnemonic for 'C ReLocatable') If all goes well, writing out of the CRL file is followed by deletion of the "CCI" file, and compilation is ) For example, if the first argument to CLINK were given as: A>clink foo.bc then CLINK would interpret the "b" in ".bc" as specifying the disk on which "DEFF.CRL" and "C.CCC" are to be found, and the "c" in ".bc" as specifying which diskcomplete. As for CC1, if a disk is specified explicitly as in A>cc2 c:yahoo then the .CCI file is loaded from the specified disk and the .CRL file is written to that same disk. On an 8080, execution time = about 35 lines/sec. :Overview - the .COM file is to be written to. Both of these values, if omitted, default to the currently logged in disk. The first argument may also be preceded by a disk designation, to specify where all .CRL files are to be searched for (by default). For- C Linker CLINK: This program links a "main" function from some CRL file together with C.CCC (for common system subroutines) and any subordinate functions which "main" may require (from perhaps many CRL files). A successful linkage causes a " example, the command A>clink b:zot.ac tells CLINK to get C.CCC and DEFF.CRL from disk A; to write the ouput file to disk C; and to find ZOT.CRL on disk B. Any other CRL files to search may also be specified on the command line (WITHOUT t.COM" file to be generated. At this point, the 8080 absolute machine code file is ready to be executed (for better or worse) as a transient command by CP/M. The first argument on the command line must be the name of a CRL file containing a "maiheir .CRL suffixes), causing those to be searched in the order specified. The default disk to search will be the same disk from which the original CRL file was taken; this default can be overridden by specifying an explicit disk designation for an" function. If the name is specified with an extension, then that extension is interpreted specially as indicating which disks are to be involved in the operation (this is akin to the mechanism ASM uses to determine source and destination disks.ny appropriate CRL file name needing it. For example, A>clink c:foo.bb bar a:zot fraz causes disk C to be searched for the files FOO.CRL, BAR.CRL and FRAZ.CRL, while disk A would be searched to find ZOT.CRL. Disk B is where CLINK would expect   DEFF.CRL and C.CCC to reside, and the output would go to disk B also. When all given CRL files have been searched, CLINK will automatically search DEFF.CRL. If there are still some unresolved references, then CLINK will ask for input from  directly from CP/M instead of via the "exec" function, then ARGC & ARGV processing is suspended, since upon being chained to you wouldn't want ARGC & ARGV processing to take place. Note that if you use this option, you should athe keyboard to try resolving them. There are also several options which may be specified on the command line. Each option must be preceded by a dash (-); the space between options and their argument (if needed) is optional. The presently suplso use the -e option to set the data area address equal to that of the chaining .COM file. Examples: A>clink foo bar gets "main" from the file FOO.CRL, searches for needed functions first in FOO.CRL and then, if needed, in Bported options are: -s Prints out load statistics; -t nnnn Reserves location nnnn (hex) and above for user; default is to reserve no space. What this really does is to cause the first op in the object file to be lxi sp,nnnn AR.CRL and DEFF.CRL. All files are assumed to reside on the currently logged in disk. A>clink b:ihtfp belle -s searches for IHTFP.CRL and BELLE.CRL on disk B; prints a statistics summary when linkage is complete. The files DEFF.CRL and C.CCC instead of lxi sp,bdos. -o name Causes the .COM file generated to have the given name. Default is the name of the first .CRL file given (the one with the "main" function.) -e xxxx Sets start of data area to address xxxx are assumed to reside on the currently logged in disk; output also goes to the currently logged in disk. A>clink b:ihtfp.aa -s belle -o zot is the same as the last example except: the output file is called ZOT.COM, DEFF.CRL and C.CCC are assu, to maintain consistency between several separate .COM files when chaining (via the library function "exec") is used. -c Specifies that the .COM file is to be chained to from another .COM file. If the resultant .COM file is invoked med to reside on A, and output goes to A. A>clink stoned -t7000 -s sets top of memory to 7000h and prints out load statistics. Current disk used for everything. Note that if the load statistics tell you that the "LAST ADDRESS" is greate  r than the "TOP OF MEMORY", the program hasn't got the chance of a snowball in hell of running correctly. :Oveview -- C Librarian CLIB: This program maintains .CRL files, allows transfer of functions from one CRL file to another, etc. To invo1 * ^C A> ... The "open" commands prepare to do work on a .CRL file, and associate each .CRL file opened with a digit (0-5). The "transfer" commands tell CLIB to transfer the named function from the first file (named by file #) to the ke CLIB, just type A>clib Clib will print a line such as FUNCTION BUFFER SIZE = nnnnn specifying the largest function size that can be handled. Attempting to "transfer" or "extract" a function larger than this size could be destructive. second file (also named by number). The "close" command need only be given for files which have been altered; since DSSR wasn't written to in the above example, it didn't need to be closed, but RTS did need to be closed. DEFF.CRL: This file  Next CLIB will prompt with a "*". Typing "h" at this point will give you a command summary. Basically, you work CLIB by opening one to six CRL files (which then become associated with "file numbers"), diddling the files to your hearts contecontains the standard function library... all 60+ functions worth. See the BDS C User's Guide for documentation on these functions. :Overview -- C Skeleton File C.CCC: The run-time skeleton file, containing code for processing the command lnt, closing all files which you altered, and typing control-C. The old version of any CRL file you change with CLIB is renamed to name.BRL (for Backup ReLative). A sample session of CLIB to, say, transfer the functions named "FOO", "BAR",ine (generating argc and argv, for you UNIX lovers), room for file I/O buffers, some math subroutines, etc. Note on the BDS C compiler: THIS IS NOT AN INTERPRETER. Some hacks, such as BASIC-E, are billed as compilers but actually jus and "ZOT" from a .CRL file named "DSSR" to one named "RTS" would go as follows: A>clib BD SOFTWARE C LIBRARIAN VERSION x.x FUNCTION BUFFER SIZE = xxxx BYTES * open 0 dssr * open 1 rts * t 0 1 foo * t 0 1 bar * t 0 1 zot * c t do some preprocessing and then interpret the program. BDS C is a true compiler, generating not-too-optimal but nevertheless quick 8080 code. For the gory details on the BDS C implementation, see my notes to APPENDIX A of the EXCELLENT book    "The C Programming Language." :Variable Types Variable types supported: int char unsigned struct union arrays (of one or two dimensions) pointers simple combinations of the above For example, char *foo[10][15]; declares foo to ears as: lxi h,foo dad b mov a,m inx h mov h,m mov m,a . To get an array element or structure element is even more hairy. Facts like this are enough to make me REALLY wish Intel had bothered to implement a double byte indirect be a two dimensional array of pointers to characters; char (*foo)(); declares foo to be a pointer to a function returning a character; char *foo, bar, zot[10]; declares foo to be a pointer to characters, bar to be a single char variabload instruction. Oh well. :ARIES-1 C Library Thå  followinç  arå thå nameó oæ thå routineó availablå iî thå  Ã Librarù DEFF.CRL®  Theù arå listeä herå aó á memorù convenience¬  anä refer to the manual for further details. 1. General Pule, ant zot to be an array of 10 characters. :Braces If your keyboard doesn't support the '{' and '}' characters (open and close brace, for those of you whose printer doesn't know about ascii 7B and 7D), the symbols 'begin' and 'end' may be rpose Functions csw() exit() bdos(c,de) peek(n) poke(n,b) inp(n) outp(n,b) pause() sleep(n) call(adr,h,a,b,d) abs(n) srand(n) rand() setmem(adr, substituted. Don't unless you have to; '{' and '}' take up less memory. The CONVERT program will perform this conversion, if necessary. :Variable Accessing Since all functions in C may be used recursively, all variable accessing is done rcount,byte) movmem(source,dest,count) qsort(base,nel,width,compar) char *source, *dest; char *base; int(*compar)(); exec(name) char *name; 2. Character Input/Output getchar() ungetch(c) kbhit()elative to a base-of- stack-frame pointer, kept in the BC register pair during execution. Note that it takes 8 bytes of code to transfer a simple local variable whose address is Š (Base of stack pointer) + foo to the HL register pair; The code app putchar(c) puts(str) char *gets(str) char *str; char *str; printf(format,arg1,arg2,...) scanf(format,arg1,arg2,...) char *format; char *format; 3. String and Character Processing    isalpha(c) isupper(c) islower(c) isdigit(c) char c; char c; char c; char c; touppper(c) tolower(c) isspace(c) strcat(s1,s2) char c; char c; char c; char *s1, *s2; buf) struct buf *iobuf; struct buf *iobuf; fflush(iobuf) struct buf *iobuf; 5. Plotting Functions (for Memory-Mapped Video Boards) setplot(base,xsize,ysize) clrplot() plot(x,y,chr) char chr; strcmp(s1,s2) strcpy(s1,s2) strlen(str) atoi(str) char *s1,*s2; char *s1,*s2; char *str; char *str; initw(array,string) initb(array,string) int *array; char *string; char *array, *string; getval(strptr txtplot(string,x,y,ropt) char *string; line(c,x1,y1,x2,y2) 6. Plotting Functions for Hazeltine 1500 clear() cplot(x,y,chr) char chr; ctxtplot(x,y,string) char *string; 7. Special I/O -- CIO) char **strptr; 4. File I/O creat(filename) unlink(filename) char *filename; char *filename; open(filename,mode) close(fd) char *filename; {mode=0 - input, mode=1 - o cio(fn) or cio(fn,arg) CIÏ indexeó directlù intï thå BIOÓ Jumð Table®  'fn§ ió thå indeø offset¬  anä 'arg§ ió aî argumenô passeä (uð tï 1¶  bits)®  Thå offsets and functions permitted are -- Offset Function utput, mode=2 - input and output} read(fd,buf,nbl) write(fd,buf,nbl) char *buf; char *buf; seek(fd,offset,code) tell(fd) fopen(filename,iobuf) fcreat(filename,iobuf) char *f ° CONSÔ -- Consolå status»  Returneä valuå ½ ° iæ nï chaò ready, 255 if char ready 1 CONIN -- Console input; Returned value = char typed 2 CONOUT -- Console output; Input value = char to output ilename; char *filename; struct buf *iobuf; struct buf *iobuf; getc(iobuf) putc(c,iobuf) struct buf *iobuf; char c; struct buf *iobuf; getw(iobuf) putw(w,io3 LIST -- List output; Input value = char to output 4 PUNCH -- Punch output; Input value = char to output 5 READER -- Reader input; Returned value = char input :Special I/O using CIO CIO is called by --    cio(fn) or cio(fn,arg) CIÏ indexeó directlù intï thå BIOÓ Jumð Table® 'fn§ ió thå indeø offset¬  anä 'arg§ ió aî argumenô passeä (uð tï 1¶ bits)® Thå offsetó anä functionó permitteä arå -- Offset Function ° åCONSÔ -- Consolå status»  Returneä valuå ½ ° iæ nï chaò ready, 255 if char ready 1 CONIN -- Console input; Returned value = char typed 2 CONOUT -- Console output; Input value = char to output 3 LåIST -- List output; Input value = char to output 4 PUNCH -- Punch output; Input value = char to output 5 READER -- Reader input; Returned value = char input å READER -- Reader input; Returned value = char input  READER -- Reader input; Returned value = char input ååå  THÅ  FOLLOWINÇ  IÓ  Á TRANSCRIPÔ OÆ AΠ "APPLICATIOΠ NOTE¢  FROÍ DIGITAÌ  RESEARCH¬  THOUGÈ THÅ ORIGINAÌ BEARÓ NÏ NOTICÅ OÆ SOURCÅ OR COPYRIGHT: CHAINING PROGRAMS UNDER CPM 2.2 by ed®  Eacè commanä ió placeä iî  á  12¸ byte record with the following format: |---|----|----|-----|----|---|-----| | n | c1 | c2 | ... | cn | 0 | ... | |---|----|----|-----|----|---|-----| Thå firsô bytå DOUG HUSKEY É  havå  ofteî beeî askeä ho÷ tï writå menõ  driveî  applicationó whicè  wilì  ruî  undeò CP/M®  Iæ  thå  applicationó  arå  beinç developeä usinç PL/I-80¬  thió caî bå accomplisheä bù writinç thå programó  aó  á seô oæ o oæ thå recorä containó thå numbeò oæ characteró iî thå  commanä  (n)¬   followeä  bù  thå  characteró  (c1-cn)¬  anä terminateä witè á zero®  Thå numbeò oæ characteró iî thå commanä ió  writteî aó á binarù numbeò anä eacè characteò ió  representeä verlays®  Often¬  however¬  somå  oæ  thå programó maù bå writteî iî assemblù language¬ oò requirå toï mucè memorù  tï  makå  thå  uså  oæ thå  overlaù  featurå  oæ  PL/I-8° appropriate®   Withouô  usinç  overlays¬   therå  arå  onlù  twï effectiv iî itó normaì ASCIÉ format®  Iô doeó noô matteò whaô followó thå terminatinç zerï iî thå record®  Foò example¬ iæ thå commanä waó "STAÔ *.*"¬  thå firsô bytå woulä bå á binarù 8¬  followeä bù thå letters "STAT *.*" and terminated with a zero. å wayó oæ chaininç undeò CP/Í 2.2®  First¬  yoõ caî  uså thå  CP/Í  submiô facility®  Thå tricë ió tï havå thå maiî  menõ prograí  creatå  á submiô filå witè thå programó  tï  bå  chaineä listeä iî it®  Thå filå musô bå writteî tï drivå A¬  anä havThå  seconä  approacè tï prograí chaininç ió  simpler®  Iî  thió approach¬  yoõ  simplù  includå á procedurå iî thå  menõ  prograí whicè  wilì loaä thå nexô prograí anä chaiî tï it®  Eacè prograí thaô  mighô chaiî tï anotheò prograí musô includå á å thå name "$$$.SUB". Thå  submiô filå  consistó oæ commanä lineó exactlù  aó  would be typeä aô thå consolå followinç thå systeí prompt®  Thå  commandó arå  placeä iî reverså ordeò sï thaô thå lasô commanä iî thå filå ió  thå firsô tï bå executcopù  oæ  thå procedure®  Thå tricë herå ió thaô thå procedurå musô firsô movå itselæ  ouô  oæ  thå  waù sï thaô iô ió noô  overwritteî  bù  thå program it is loading. Thå  assemblù languagå prograí listeä aô thå enä oæ thió  articlå accomplish  eó  this®  Iô  waó writteî tï bå linkeä  witè  PL/I-8° moduleó aó aî externaì procedure®  Oæ course¬  iô coulä alsï  bå useä  iî aî assemblù languagå menõ program®  Iæ yoõ wisè tï linë iô  tï á PL/I-8° prograí thå followinç entrù declaratioî musô cb); call chain(dummy); put skip(2) list('Shouldn''t be here!!'); end chainl; Thió  prograí wilì prinô thå messagå "Chaiî Tesô prograí 1"¬  anä chaiî tï thå prograí CHAIN2.COÍ oî thå defaulô drive®  CHAIN² ió á  prograí identicaì tï CH bå Šincluded in the PL/I-80 program doing the chaining: dcl chain entry (char(12)); Thå  characteò  1² variablå consistó oæ thå  standarä  CP/Í  filå controì  blocë (FCB© format®  Thió caî bå createä iî thå PL/I-8° prograí aó á strucAIN± excepô thaô iô printó "Chaiî  Tesô prograí  2¢  anä chainó tï CHAIN1.COM®  Thuó chain±  anä  chain² continuå tï chaiî bacë anä fortè tï eacè other¬  noô reaì  usefuì buô  aî  interestinç  demonstration®  Notå thaô  anù  statementó followinç ture® Á char(12© variablå caî theî bå baseä aô thå samå addresó aó thå structurå foò thå purposå oæ  interfacinç tï  thå chaiî procedure®  Thå PL/I-8° prograí belo÷  illustrateó this® Notå thaô thå drivå ió noô aî ASCIÉ characteò buô á binarù nuthå calì tï thå chaiî procedurå wilì neveò bå  executeä as the chain procedure never returns, it chains. Thå  chaiî procedurå consistó oæ twï routines¬  aî initializatioî routinå  anä  thå loadeò  routine®  Thå  initializatioî  routinå initializembeò betweeî ° anä 16¬ wherå ° ió thå currenô defaulô drivå anä 1 through 16 represent the CP/M drives A through P, respectively. chainl: proc options(main); /* chain subroutine tester */ dcl 1 fcb static, 2 drive fixed(7) ó  thå  FC  foò  thå prograí tï  bå  loadeä  anä  theî relocateó  thå  loadeò anä FC tï thå verù toð oæ  thå  transienô prograí areá (TPA)¬  immediatelù belo÷ thå BDOS¬ sï thaô iô won'ô bå  overwritteî bù thå loadeä program®  Thå loadeò beginó aô init(0), 2 name char(8) init('CHAIN2'), 2 type char(3) init('COM'), dummy char(12) based(dp), dp pointer, chain entry(char(12)); put skip list ('Chain Test program 1'); dp = addr(fthå labeì  "code:¢  anä endó aô thå enä oæ thå FC aô  thå  statemenô "codelen equ $-code". Thå initializatioî portioî firsô copieó thå drive¬  filå namå anä typå  intï thå FC usinç thå "move¢ routine®  Iô theî filló  thå resô  oæ thå FC witè   zeroó usinç thå "fill¢ routine®  No÷ comeó thå trickù part® Iô pickó uð thå BDOÓ baså addresó froí thå jumð aô  locatioî µ iî lo÷ memory®  Nexô thå routinå  subtractó  froí thió  thå lengtè oæ thå loadeò anä fcâ anä filló iî thå jumð bacë Štï "che chained program. Thió  routinå provideó aî effectivå anä relativelù simplå  methoä oæ chaininç programó undeò CP/M¬ MP/Í IÉ anä CP-NET® Iî additioî tï beinç compatiblå witè alì oæ theså systems¬  iô ió alsï fasteò thaî  thå  submiô filå methoäode:¢ iî thå loader®  Iô calculateó thå addresó oæ thå FC afteò  iô ió moveä anä filló iî thå lxé instructioî aô thå  labeì "fcbr:"®  Theî  anotheò calì tï thå movå routinå moveó thå  codå anä  fcâ intï thå propeò locatioî belo÷ thå BDOS®  Iô op describeä aô thå beginninç oæ  thió article. public chain ; (char(12)) extrn ?signal ; /* loads another COM file and executes it */ bdos equ 5 openf equ 15 readf equ 20 dmafenó  thå filå  tï bå loaded¬  testó thå Á registeò tï seå iô thå opeî  waó successful¬  anä  signaló aî erroò ("Baä Chaiî Attempt"©  iæ  thå filå waó noô found® Finally¬ iô popó thå addresó oæ thå starô oæ thå  loadeò routine¬  setó thå stacë tï  equ 26 cseg chainº  movå e,í ¡ inø è ¡ moö d,í ¡ xchç ;geô firsô arg address lxi d,fcb ! mvi c,12 ! call move ;move string to fcb lxi d,fcb+12 ! mvi a,0 ! mvi c,21 ! call fill gro÷ dowî froí belo÷  thå loadeò  anä pusheó thå addresó bacë ontï thå stacë iî preparatioî foò  á  return®  Onlù onå thinç lefô tï do¬  initializå  thå  HÌ registeò tï thå beginninç oæ thå TPÁ aô 100H¬  wherå thå  prograí will be loaded. The ret ;zero rest of fcb lhld bdos+1 ! lxi b,-code$len ! dad b ;make space at top of TPA shld jmpr+1 ;jump address push h urn fires off the loader. Thå  loadeò routinå simplù setó thå DMÁ address¬  readó á sector¬ checkó  foò  aî enä oæ file¬  incrementó thå DMÁ addresó  bù  12¸ bytes¬  anä  repeató  thå  process®  Wheî thå  enä  oæ  filå  ió detected, it jumps to t ;save code address for RET xchg ! lxi h,fcb-code ! dad d ;make address of FCB shld fcbr+1 ;and fix LXI push h ;save FCB destination add. lxi h,code !   mvi c,code$len ! call move ;destination in DE pop d ;recover FCB address mvi c,openf ! call bdos ;open file inr a ! jz sig  1 ;rrec codelen equ $-code move: ; c = # bytes, hl = source, de = destination mov a,m ! stax d inx h ! inx d ! dcr c jnz move ret fill: ; a =byte to fill, c = #  ;signal if error pop h ! sphl ! push h ;point stack to top of ;TPA and save address lxi h,100h ;point to start of TPA ret code: bytes, de = start address stax d ! inx d dcr c ! jnz fill ret sig: lxi h,siglist ! call ?signal ! jmp 0 ;signal error siglist: dw sigcode,sigsub,sigfil,message  push h ! xchg ! mvi c,dmaf ! call bdos Š ;set DMA address fcbr: lxi d,$-$ ! mvi c,readf ! call bdos ;read next record ora a ! jnz 100h  ;(fixed(6),bit(8),ptr,p sigcode db 6 ;undefined file error sigsub db 2 ;arbitrary subcode sigfil dw fpb ;ptr to ;EOF -> start TPA pop h ! lxi d,128 ! dad d ;recover and bump DMA ;address jmpr: jmp $-$ ;jump to code fcb: ds 1 ;d file parameter message dw quack ;auxiliary oper. msg. fpb: ;PL/I file parameter blk fcbptr dw fcb-1 ;.fcb-1 fpblst dw 0 rive code ds 8 ;file name ds 3 ;file type ds 4 ;control info ds 16 ;disk map ds  ;(unused)ptr column dw 0 ;current col fixed (15) curline dw 0 ;current line " curpage dw 0 ;current page " currec dw 0   ;(unused) lookchr db 0 ;lookahead char (1) ioend dw 0 ;i/o end address iostk dw 0 ;user stack upon sio entry spacer ds 4 å ;spacer linesz dw 0 ;line size fixed (15) pagesz dw 0 ;page size " fixedsz dw 0 ;fixed size " blocksz dw 0 ;block siåze " filedes dw 0 ;file descriptor dtitle db 0,'' ;default title ; char(14) varying quack db 17,'Bad Chain Attempt',0 ;error messageå Še ; char(14) varying quack db 17,'Bad Chain Attempt',0 ;error message USER MODIFIABLE INDEX Threå fileó compriså thió seriesº DBINDEX1.DBÆ (thå completå indeø incorporateä iî á dBASEIÉ file)¬ DBINDEX2.DBÆ (onlù thå "A¢ entrieó oæ thå previouó filå useä foò easå oæ manipulation© anä DBINDEX3.TXÔ (á WåordStaò nondocumenô filå generateä froí DBINDEX2.DBF). Thió ió aî examplå oæ á "Useò modifiablå Index¢ whicè shoulä bå fairlù easù tï generatå foò variouó Osbornå manuals® Iô giveó thå useò thå optioî oæ addinç oò changinç itemó iî aî indeø tï   suiô his/heò peculiaò tasteó iî findinç thingó iî indices® Iô shoulä bå fairlù easù tï generatå thå baså caså bù typinç thå indiceó supplieä bù OCà (foò Useró Manual¬ dBASEII¬ Technicaì Manual¬ etc.© intï á dBASEIÉ filå (likå DBTRANS1.DBÆ - seåå structure© anä supplyinç oî disë aó botè dBASEIÉ filå (foò thoså whï havå thaô program© anä WordStaò filå likå thió onå (foò everyone)® Additionaì itemó caî bå inserteä mosô easilù iî thå dBASEIÉ filå witè INDEXinç anä SORTinç aô will® Alternatb RDSUBJECTC7ÑlPGE1CmPGE2C mPGE3CmPGE4Cm ively¬ ne÷ itemó (oò modifications© caî bå madå iî thå WordStaò filå bù insertioî intï propeò alphabeticaì order® Thå pagå numberó noteä iî thå samplå indiceó refeò tï á personaì revisioî oæ thå dBASEIÉ manuaì designeä foò copiouó annotationó anä revisionó anä havå nï meaninç foò anù oæ thå standarä dBASEIÉ manuals® Thå "u¢ notationó refeò tï thå "dBASEIÉ User'ó Guide¢ publisheä bù Softwarå Banã witè "u¢ followinç thå pagå numbeò foò pageó undeò 10° anä precedinç thå pagå numbeò oveò p ASCII character equivalent function (CHR) agå 100. Aî additionsì modificatioî oæ thå indeø (whicè É wilì probablù eventuallù do© ió tï adä somå additionaì fieldó tï thå dBASEIÉ filå specifyinç morå specifiã indiceó (foò WordStar¬ SuperCalc¬ etc.).  38 Aborting commands (ESCAPE) 240 Accept (ACCEPT) to memory 141 Adding data (APPEND) 25 133 Addition (SUM)    35 129215 Addition (TOTAL) 21663 And (.AND.) operator, use in commands 34 12945u And sign (&) macrosubstitution function 38 131 Append (APe files (COPY) 44 Call (CALL) to branch process. to memory location 239 Carrying over (CARRY) in data entry 239 Case (CASE) 16246u237 PEND) 1429u Append BASIC 146 Append SUPERCALC 146 Append WORDSTAR 146  Change (CHANGE) FIELD 39 Changing characteristics (SET) 51 Changing records (EDIT, INSERT, DELETE) 29 Character  Append records (APPEND, UPDATE) 41 142 Appending data (APPEND, UPDATE) 25 45 218 Arithmetical operations 35 129 Assigning codes  12 128 Check balancing (program) 222 Code file 75 Code file checking 77 Code file command file  75 Asterisk (*) deleted record 36 127 At sign (@) substring function (SET FORMAT TO, GET) 37 139 Basic (RENAME) 45 Basic BASIC (COPY, SDF, DELIMI 76 Colon delimiting (COLON) 239 Command file commands 135 Command file creating (MODIFY command) 28u237 Command file documT, APPEND) 44 132146 Bell (BELL) toggle 239 Bibliography u27 Browsing (BROWSE) 147237 CP/M compatiblentation 62u Command file editing (MODIFY Command) 237 Command file programming 222 Command file rules 137 Co  mmand files 54 133 Command files editing within dBase (MODIFY COMMAND) 18728u Command files, Accounting system 82 Command files, debugging (STEP, ECHO)  Copying structure with examination 238 Copying to MailMerge with blank trimming 238 Create file (see Data entry screen) 49u Creating files directly (CREATE FROM)  51 54u Command symbols 137 Commands (with parameters), list 230 Comparison operators 129 Compressed print [ctrl P,? CHR(15)] re 238 Creating new files (CREATE) 19 1338u Cursor control characters 18 24 32 DBASE, entering and leaving 79u26u DBASE, standard proceduresleasewith? CHR(1838 Conditional ENDIF (example in program) 223 Conditionals in command files (IF, ENDIF, ELSE) 57 173 Console (ECHO, TALK, CONSOLE) 51 Constants  43u55u Data dictionary 61u Data displaying 133 Data entry carry over (CARRY) 239 Data entry 33 124 Control characters 24 18 32 119 Control characters (APPEND, CREATE, INSERT) 136 Control characters (EDIT) 32 136 Contro confirmation (CONFIRM) 239 Data entry screens 49u Data files, using (USE) 21 Data structure, definition of 55u6u l characters (MODIFY) 136 Control characters, full screen 136237 Copying dBASE files to CP/M compat. files (COPY) 44 150 Copying selected records to file (APPEND,COPY) 26u Debugging (DEBUG) for hard copy 240 Debugging command files (STEP, ECHO) 51 54u Definitions, field names (to 10 char.,to 254 length) 12 121122 Definitions, files (to 8 char.)    14 121 Definitions, general 9 Definitions, records (32 entries/file) 12 Deleting records (DELETE, RECALL, PACK) 29 15u Delimiting in APPENDing foreig 32u Documentation 62u Doing command files (DO) 54 16229u Echo (ECHO) 54u Editing .CMD filesn files 44 146142 Device controlling commands 135 Dictionary of data 61u Disk default (SET DEFA TO) 2108u Disk directory (MODIFY COMMAND) 28u Editing files (EDIT, BROWSE) 147163133 Editing files (EDIT, BROWSE) 14u Editing screen (SET FORMAT TO SCREEN) 68 Ed (DISPLAY FILES) 161190 Disk search for file (FILE function) 38 Disk space (economize by INDEX) 11u Disk swap (RESET) 203 iting screen (SET FORMAT TO SCREEN) 68 Eject limitation (only if SET PRINT ON) 241 Eject page in printing (EJECT) 166209240 Else (ELSE)  Display (DISPLAY) All, Record or Next 26 Display (DISPLAY, ?) 138160 Display files (DISPLAY) 161 Display memory files (LIST, ?)  173 End of file (EOF) 36 127 Erase (ERASE) screen 168240 Error recovery 118 Escape (ESCAPE) disable  17u Display/List formats (RAW) 240 Displaying structure and data (DISPLAY) 22 26 Do WHILE (in programs) 33u45u Do WHILE loop  239 Examining files (LIST,DISPLAY,LOCATE, BROWSE) 22 26 147185 Excess spaces removal (TRIM function) 38 128305 Execute command files (DO) 54 Exit (QUIT)    50 Expression rules 130 Expressions 124240 FILES EXAMINATION (list, display, browse, locate) 22 26 147185 Field ying items between (APPEND FROM) 19u Files, merging selectively (UPDATE FROM) 218 Find (FIND) 16924312u Foreign files (FILE EXT) 44 1321(FIELD) modification (CHANGE) 39 Field RENAME 45 Field name change (RENAME, COPY/MODIFY/APPEND)(use SDF)45 25u Field names 13 46 Foreign files, copying dBASE to (COPY) 150u21 Format 13971 68 Format (.FMT) files for screens 52u67u Format files (example in mail list program)  Field replacement (REPLACE) 39 Field size 9u File [FILE] for ident. file 44u239 File directories (DISPLAY FILES)  67u Format printed page (SET FORMAT TO 71 Format reports (REPORT) 52 Functions list 36 125239 Get (GET, CLEAR GETS)  161190 File extension definitions 14 File function 128 File names 14 121 File names and features (t 139237 Global replace 13119715u Go and Goto (GO, GOTO) 170 Go to record no. (enter alone with ) 19u Grammatical ruo 65K data records) 121 File structure (see Structure) File verification (FILE function) 38 Files, copy many items between (COPY to) 23u Files, coples 6u Help command (example for programs) 40u If (IF) 173 If (IF) (in programs) 36u45u    If (IF) series (CASE) 46u Index (INDEX) 47 17424211u Index file list (for auto INDEX) 237 Index of SoftwareBanc User's Guide  26u Length of string function (LEN) 37 126 Limitations and constraints 235 Linking files u15 Linking prim/sec files  u29 Index search (FIND) 220170 Indexing files (in program) 61u Input (ACCEPT) (in programs) 36u45u Input data type query  240 List/Display FORMAT (RAW) 240 Listing data (LIST) 26 1847u Listing memory files (?, LIST) 17u Locate (LOCATE) restri 239 Input manually (INPUT,ACCEPT) 64 14117730u Input screens 49u Input, manual (WAIT) 22153u Inserting records ction in WHILE 238 Locating items in files (LOCATE, CONTINUE, BROWSE) 185147238242 Logical 12 Logical operators 129 Logica(INSERT) 30 179 Integer function (INT) 36 125 Integer to string function (STR) 37 Interactive data entry (WAIT, INPUT, ACCEPT) 64 Jol validation 241 Looking at records (DISPLAY, LIST, BROWSE) 26 147 Looping in command files (LOOP, DO WHILE .NOT. EOF,ENDO57 58 167186 Lower/upper case function (!) 38 ining records (JOIN) 43 181 Key entry (WAIT) 53u Key field (INDEX) 11u Leaving dBASE (QUIT or QUIT TO "xdir b:" 241 Macro creation (STORE '' to 20u Macrosubstitution (&) 38 13120u Mailing labels (program) 30531u39u Mailing list for alumni (program)    57u Manual input (ACCEPT,INPUT) 64 141177 Manual input (WAIT) 221240 Margin, setting (SET MARGIN) 209 Mathematical operations AND) for edit or create 237 Modifying file structure (MODIFY) 23 45 18723u Next (NEXT, WHILE) 130 Not (.NOT.) operator, use in commands (.AND. .NOT.) 35 129 Note (NOTE)  35 129215 Mathematical operations 61 Mathematical process (TOTAL) 216 Memory (variables, constants, operators) 33 124134 Memory fil 188 Number of record (#) 36 Number of records (COUNT) 63 Number to character function (CHR) 199 e display (DISPLAY, LIST, ?) 17u241 Memory files 16u45u Memory input (ACCEPT,INPUT) 141177 Memory read (RESTORE) 20461 1 Numeric 12 Operators 33 129 Or (>OR.) operator, use in commands 34 129 Pack (PACK) 7u Memory release (RELEASE) 61 45u Memory save (SAVE) 20617u Memory store (STORE) 21416u Memory variables  18916u Peek (PEEK) 189239 Picture (PICTURE) format 13952u Picture option to upper case (!) 241 Plain (PLAIN), use in printing  61 Menus (in programs) 38u Merging files selectively (UPDATE FROM) 218 Merging records (APPEND FROM, CREATE FROM) 41 155 Modify .CMD files (MODIFY COMM 199241 Pointer for records (SKIP) 21218u Pointer to specific record no. (enter alone w/)19u Poke (POKE) 189239 Positioning comman  ds (SKIP, GO, GOTO, LOCATE, FIND) 49 134 Prim/sec data bases, link display (SET LINKAGE) 209240 Prim/sec, transferring data (SetCode program) 76 Primary/secondary data bases (SELECT) 21 20720u Prmming 12227u57u Pseudo code 31u34u57u Pseudo code (mailing list program) 79u Question mark (?) (DISPLAY, WHAT IS) 138int format (SET FORMAT TO PRINT) 13971 Print reports, avoid p.# and date (PLAIN) 199 Printer, compressed (see Compressed print) Printer, eject (EJECT)  Quitting (QUIT) 50 190 26u Quote marks for character strings 34 Read (READ) 191 Rearrange files (SORT)  166209 Printing (ctrl P) 10u Printing PLAIN reports 241 Printing defaults (m=8,l=56,w=80) 52 Printing forms (SET FORMAT TO PRINT)  213 Recalling deletions (RECALL) 30 19315u Recod no., go to (enter alone with ) 19u Record number function (#) 36 126 Record pointer (SKIP)  71 Printing reports (REPORT FORM TO PRINT) 53 72 20013u Printing, setting margiin (SET MARGIN) 209 Program design (pseudo code) 31u Program documentation  21218u Releasing memory files (RELEASE) 61 19417u Remarks (REMARK) in programs 50 195 Renaming (RENAME) 45 196 Repeat (in 62u Program structure (DO CASE) 162 Program, check balancing 222 Program, mailing labels 305 Progra APPEND) by SET CARRY ON 239 Replace (REPLACE) fields 39 14u Replace, global 13119715u Report format 52 1991  3u Report printing, avoid p. # and date (PLAIN) 199 Reports, printing and displaying 13u Reset (RESET) for disk swap 203 Restore (RESTORE) for retrieving memory files ss>) 185 Search substring(LOCATEFOR@("",)>037 127 Search, display and print ( P before ) Searching files (FIND) 220 Secondary/primary data base (SELEC 20417u Returning control to command files (RETURN) 54 205 Reviewing records (DISPLAY, LIST) 26 Saving memory files (SAVE) 62 20617u Say (SAY) T) 21 20720u Secondary/primary files (LINKAGE) 240 Select (SELECT) prim/sec files 207 Setting characteristics (SET) 51 209239 Skip (SKIP) in set 139 Scope 6u Screen coordinates 240 Screen data entry 49u Screen editingting of record pointer 21218u240 Sort (SORT) 47 21311u242 Spread sheet SUPERCALC (COPY, SDF,DELIMIT, APPEND) 44 132146 Spread sheet SUPERCALC (RENAME) 45 Sp (SET FORMAT TO SCREEN) 68 Screen editing, numerical 241 Screen erase example (ERASE) 65 Screen format (SCREEN) 68 139240 read sheet to .TXT file u22 Spread sheet to dBASE u23 Square brackets for character strings 34 Standard data format (SDF) used for foreign files  Screen intensity (INTENSITY) 240 Screen numeric truncation 241 Screen operations (SCREEN, ERASE) 51 65 Search and display(DISPLAY ALL FOR =") 79u Storing to memory file (STORE) 59 61 214 String comparisons (EXACT)    240 String expressions 240 String function (STR) 35 125 String length function (LEN) 37 String operators  DATE, EOF) 19u Terminating command files (CANCEL) 60 Test (TEST) for syntax error 216238 Text processor (see Word processor WORDSTAR) Total sum  129 String to integer function (VAL) 37 126 Structure change (CHANGE) 39 14822u Structure change (COPY, MODIFY and APPEND) 23u Structof numeric data (TOTAL) 63 216 Totals in reports 13u Transfer data between files (APPEND from) 26u Trimming excess spaces (TRIM function) 38 1284ure check 22 21u Structure display (DISPLAY) 22 Structure display (DISPLAY, LIST) 22 Structure modify (MODIFY, APPEND) 23 4u239 Trimming function (TRIM) (example in program) 305 Trimming in transfer from dBASE to MailMerge 238 Underscore output to CRT 241 Update (UPDATE)  Structure rename 45 Substring function ($) 37 126240 Substring search function (@) 37 127 Subtotals in reports  218 Upper case from lower case (!) 37 128 Using files (USE) 21 220 Variables 33 124 Wait (WAIT)  13u Sum (SUM) addition 215 Syntax 6u Syntax error (TEST) 216238 System variables (pointer, 22153u What is ? (question mark) 138 While (WHILE) 130238 Word processing APPEND WORDSTAR files to dBASE 142u24 Word processin  g COPY WORDSTAR files from dBASE 150u21 Word processing WORDSTAR (COPY, SDF, DELIMIT, APPEND) 44 51 132146 Word processing WORDSTAR (COPY, SDF, DELIMIT, APPEND) 238 Word processing WORDSTAR (RENAME) 45 entation 62u Command file editing (MODIFY Command) 237 Command file programming 222 Command file rules 137 Co Word processing(WordStar)fromdBASEfiles(SET ALTERNATETOu21 Write to disk (in APPEND) 25 136 Write to disk (in EDIT) 32 136 Write to disk (in MODIFY) å 24 136  RçÿSUBJECTC7ÑlPGE1CmPGE2C mPGE3CmPGE4Cm åå Colon delimiting (COLON) 239 Command file commands 135 Command file creating (MODIFY command) 28u237 Command file documå  DSUBJECTC7ÑlPGE1CmPGE2C mPGE3CmPGE4Cm DSTAR 146 Append records (APPEND, UPDATE) 41 142 Appending data (APPEND, UPDATE) 25 45 218 Arithmetical operations 35 129  Assigning codes 75 Asterisk (*) deleted record 36 127 At sign (@) substring function (SET FORMAT TO, GET) 37 139 ûû„óŒ„ûû„ûûûû„„ûóûûóûûûûûûû ASCII character equivalent function (CHR) 38 Aborting commands (ESCAPE) 240 Accept (ACCEPT) to memory 141 Adding data (APPEND) û{ûûûóûûûûûûûûûûûû÷û„ûû„óûûûûûûûûûûûûûûûûûûûûûûû{ûûûûûûûûûûûûûûûûûûûûûÿÿûûûû„ûûûŒ{{ûsû{ûûûûûûûûûûûû„ûûûûÿÿûûùûûû ûŒ ûûûÿûûûû ûû„óûûûóû ûû 25 133 Addition (SUM) 35 129215 Addition (TOTAL) 21663 And (.AND.) operator, use in commands 34 12945u And sign (&) macrosubstituTHIS FILE, NAMED DBINDEX3.TXT, WAS GENERATED FROM DBASEII FILE DBINDEX2.DBF BY A SERIES OF COMMANDS: . SET ALTERNATE TO B:DBINDEX3 . USE B:DBINDEX2 . SET ALTERNATE ON . DISPLAY ALL . SET ALTERNATE OFF . QUIT IT WAS THEN EDITED AS A NONDOCUMENTtion function 38 131 Append (APPEND) 1429u Append BASIC 146 Append SUPERCALC 146 Append WOR FILE IN WORDSTAR TO DELETE EXTRANEOUS CHARACTERS. ASCII character equivalent function (CHR) 38 Aborting commands (ESCAPE) 240 Accept (ACCEPT) to memory    141 Adding data (APPEND) 25 133 Addition (SUM) 35 129 215 Addition (TOTAL) 216 63 And (.AND.)  36 127 00018 At sign (@) substring function (SET FORMAT TO, GET) 37 139 ng codes 75 00017 Asterisk (*) deleted record operator, use in commands 34 129 45u And sign (&) macrosubstitution function 38 131 NOTE: FILE NUMBERS WERE DELETED FROM THE ABOVE ITEMS BY HAND. THIS SHOULD BE EASIER TO DO WITH WORDSTAR 3.0 USING A C USER MODIFIABLE INDEX FOR OSBORNE USER'S REFERENCE GUIDE These indices are organized in the same way as the index for dBASE II that is described in DBINDEX.DOC. The index contains only a small amount of the information coOLUMN BLOCK DELETE. IS THERE AN EASY WAY TO DO IT NOW? 00009 Append (APPEND) 142 9u 00010 Append BASIC 146 00011 Append SUPERCALC ntained in the OCC1 Guide. It was constructed from the information in the Table of Contents of the Guide. The pertinent files are: OCC1NDX3.DBF (dBASE II file sorted alphabetically), OCC1NDX3.FRM (print format for printing from dBASE II) and OCC1N 146 00012 Append WORDSTAR 146 00013 Append records (APPEND, UPDATE) 41 142 00014 Appending data (APPEND, UPDATE) DX3.TXT (WordStar nondocument file transferred from OCC1NDX3.DBF with some editorial changes to improve the text).les are: OCC1NDX3.DBF (dBASE II file sorted alphabetically), OCC1NDX3.FRM (print format for printing from dBASE II) and OCC1N 25 45 218 00015 Arithmetical operations 35 129 00016 Assigning codes 75 00017 Asterisk (*) deleted record å  å cells 144 Block manuevers in WordStar 84 C CBasic reference section ååååååm=10 y INDEX FOR OCC1 USER'S REFERENCE GUIDE;===================================== n n 55,SUBJECT SUBJECT; ======= 4,PGE1 4,PGE2 PAGE;==== 4,PGE3 NO.;=== 4,PGE4  Blanking SuperCalcå  å 54 CP/M commands 52 CP/M reference section R2 Centronics interface, OCC1 å 283 Compiling CBasic programs 188 Control characters (CP/M) 55 Copying SuperCalc data 151 .po5 .op USER MODIFIABLE INDEX FOR OSBORNE 1 USER'S REFERENCE GUIDE A Assembly language programming, CP/M 240 B  Copying diskettes 37 Creating CBasic programs 186 D  Blanking SuperCalc cells 144 Block manuevers in WordStar 84  Data entry, SuperCalc 136 Definitions of terms R1 Deleting SuperCalc data 157  C CBasic reference section R100 CBasic, general 186 CP/M (ambiguity)  Disk drives 20 Disk drives 51 Disk interface, OCC1 279 Diskettes    20 Dot commands 97 E EditiSuperCalc 174 H Help (HELP menu) 33 Hng WordStar files 77 Error messages, CP/M 60 R197 Error messages, CBasic R211 Error messages, MBasic elp assistance 40 I IEEE implementation on OCC1 A13  R217 Error messages, SuperCalc R207 Error messages, WordStar R199 F  IEEE interface, OCC1 279 Inserting SuperCalc data 157 Installation of SuperCalc A30  File names 48 Finding text in WordStar 89 Formatting SuperCalc spreadsheets  J K Keyboard  163 Formatting diskettes 35 G Graphic formats in  18 Keyboard, OCC1 276 L Loading   a program 31 M MBasic reference section R148  Peripheral interchange prog. (PIP) 57 Print control characters in WordStar 91 Printing WordStar files 94  MBasic, general 194 MailMerge 106 Margins in WordStar 80 Memory layout,  Protecting SuperCalc cells 144 Q Quick reference section OCC1 267 Modem interface, OCC1 277 Monitor 17 Moving SuperCalc data  Q1 R RS-232 interface, OCC1 277 Recalculations in SuperCalc  157 N O  174 Replicating SuperCalc data 151 Reset 40 Restarting  Output for SuperCalc files 179 Output ports, OCC1 275 P  20 S Saving SuperCalc files 144 Screen manipulations, OCC1 !   271 Searching in WordStar 89 Setting up 12 Setup (SETUP) 41  W Window for SuperCalc operations 169 WordStar (genera Starting 20 Status (STAT) 57 SuperCalc reference section R65 SuperCalcl) 64 WordStar help 70 WordStar menues 66 WordStar modifications for printers , general 128 System specifications, OCC1 265 T  A1 WordStar reference section R19 WordStar text entry 72 X  Tabs in WordStar 80 Title lock on SuperCalc spreadsheets 169 Turning on the OCC1 30  Y Z  U Using CBasic programs 190 V  .PA  Z "  å cells 144 Block manuevers in WordStar 84 C CBasic reference section å R100 CBasic, general 186 CP/M (ambiguity) 54 CP/M commands 52 m SLSUBJECTC7ÑlPGE1CmPGE2C mPGE3CmPGE4CmPGE5Cm  CP/M reference section R2 Centronics interface, OCC1 283 Compiling CBasic programs 188 Control characters (CP/M)  55 Copying SuperCalc data 151 Copying diskettes 37 Creating CBasic programs  A Assembly language programming, CP/M 240 B Blanking SuperCalc 186 D Data entry, SuperCalc 136 Definitions of terms R1 Deleti#  ng SuperCalc data 157 Disk drives 20 Disk drives 51 Disk interface, OCC1  Formatting diskettes 35 G Graphic formats in SuperCalc 174 H  279 Diskettes 20 Dot commands 97 E  Help (HELP menu) 33 Help assistance 40 I  Editing WordStar files 77 Error messages, CP/M 60 R197 Error messages, CBasic R211 Error messages IEEE implementation on OCC1 A13 IEEE interface, OCC1 279 Inserting SuperCalc data 157 In, MBasic R217 Error messages, SuperCalc R207 Error messages, WordStar R199 F stallation of SuperCalc A30 J K Keyboard  File names 48 Finding text in WordStar 89 Formatting SuperCalc spreadsheets 163  18 Keyboard, OCC1 276 L Loading a program 31 $   M MBasic reference section R148 MBasic, general 194 MailMerge  94 Protecting SuperCalc cells 144 Q Quick reference section Q1  106 Margins in WordStar 80 Memory layout, OCC1 267 Modem interface, OCC1  R RS-232 interface, OCC1 277 Recalculations in SuperCalc 174 Replicating SuperCalc data 277 Monitor 17 Moving SuperCalc data 157 N  151 Reset 40 Restarting 20 S  O Output for SuperCalc files 179 Output ports, OCC1 275 P  Saving SuperCalc files 144 Screen manipulations, OCC1 271 Searching in WordStar 89 Settin Peripheral interchange prog. (PIP) 57 Print control characters in WordStar 91 Printing WordStar files g up 12 Setup (SETUP) 41 Starting 20 Status (STAT) %   57 SuperCalc reference section R65 SuperCalc, general 128 System specifications, OCC1 265 tion R19 WordStar text entry 72 X Y  T Tabs in WordStar 80 Title lock on SuperCalc spreadsheets 169 Turning on the Z eference section R148 MBasic, general 194 MailMerge  OCC1 30 U Using CBasic programs 190 V  106 Margins in WordStar 80 Memory layout, OCC1 267 Modem interface, OCC1  W Window for SuperCalc operations 169 WordStar (general) 64 å WordStar help 70 WordStar menues 66 WordStar modifications for printers A1 WordStar reference secå&  åååå --> FILE: -FOG/MIS.013 CRC = 00 00 --> FILE: BDS-C .HLP CRC = 51 2C --> FILE: CPMCHAIN.DOC CRC = ED 84 --> FILE: DBINDEX .DOC CRC = EC 8C --> FILE: DBINDEX1.DBF CRC = 1D C1 --> FILE: DBINDEX2.DBF CRC = EA 3F --> FILE: DBIåNDEX3.TXT CRC = 83 E5 --> FILE: OCC1NDX .DOC CRC = 3E 2F --> FILE: OCC1NDX3.DBF CRC = 2B 36 --> FILE: OCC1NDX3.FRM CRC = 6D B7 --> FILE: OCC1NDX3.TXT CRC = FA 3A ---------------------> SUM OF CRCS = 88 77 ååå'  åååååååååå